Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript sails-mongo:多对多关系在我的应用程序中不起作用。按照文档的说明仍然给出空数组_Javascript_Node.js_Mongodb_Sails.js_Sails Mongo - Fatal编程技术网

Javascript sails-mongo:多对多关系在我的应用程序中不起作用。按照文档的说明仍然给出空数组

Javascript sails-mongo:多对多关系在我的应用程序中不起作用。按照文档的说明仍然给出空数组,javascript,node.js,mongodb,sails.js,sails-mongo,Javascript,Node.js,Mongodb,Sails.js,Sails Mongo,我在mongodb中使用sails js 以下是我的EventTags模型: EventTags.js module.exports = { schema: true, attributes: { eventList: { collection: 'Events', via:'tagList' }, event_tag_name:{ type:'

我在mongodb中使用sails js

以下是我的EventTags模型:

EventTags.js

module.exports = {

schema: true,

  attributes: {

          eventList: {
                collection: 'Events', 
                via:'tagList'

            },  

            event_tag_name:{ type:'string',
                 required:true,
                 unique:true
            }
  }
};
以下是我的事件模型:

Events.js

module.exports = {


    schema: true,

  attributes: {

        tagList: {
                collection: 'EventTags', 
                via:'eventList'  
            }, 

        title:{ type:'string',required: true},

        blurb:{ type:'string'},

        description:{ type:'string'},

        venue: {type: 'string',required: true},
    }
};
创建了EventTags,下面是我的json响应

{

    "status": 109,
    "status_message": "success..!!",

    "event_tag_info": {

        "event_tag_name": "travel1",
        "createdAt": "2015-07-15T06:01:09.050Z",
        "updatedAt": "2015-07-15T06:01:09.050Z",
        "id": "55a5f725f7d707ba4f32ac74"
    }
}
接下来,我复制了EventTags ID,即“ID”:“55a5f725f7d707ba4f32ac74”。 创建事件模型。 下面是事件模型Post数据

{

    "tagList":"55a5f725f7d707ba4f32ac74",

    "title": "Snow City : Bengaluru", 

    "blurb": "testtesttesttesttesttest", 

    "description": "Toronto has been chosene city",

    "venue": "palace ground" 

}

当我击中

我得到的是空的标记列表数组

[

  {

      tagList: [ ], 
      title: "Snow City ", 
      blurb: "some data",
      description: "some data", 
      venue: "some address", 
      id: "55a5f98ef7d707ba4f32ac75"
  }

] 

请任何人帮我解决这个问题。

多对多关系意味着Sails将自动创建联接表。因此,您需要将两个表中的数据相互关联

首先。在型号中,所有通孔名称均为小写:

EventTags.js

module.exports = {

schema: false,

  attributes: {

          eventList: {
                collection: 'Events', 
                via:'taglist'

            },  

            event_tag_name:{ 
                 type:'string',
                 required:true,
                 unique:true
            }
  }
};
module.exports = {


    schema: false,

    attributes: {

        tagList: {
                collection: 'EventTags', 
                via:'eventlist'  
            }, 

        title:{ type:'string',required: true},

        blurb:{ type:'string'},

        description:{ type:'string'},

        venue: {type: 'string',required: true},
    }
};
Events.js

module.exports = {

schema: false,

  attributes: {

          eventList: {
                collection: 'Events', 
                via:'taglist'

            },  

            event_tag_name:{ 
                 type:'string',
                 required:true,
                 unique:true
            }
  }
};
module.exports = {


    schema: false,

    attributes: {

        tagList: {
                collection: 'EventTags', 
                via:'eventlist'  
            }, 

        title:{ type:'string',required: true},

        blurb:{ type:'string'},

        description:{ type:'string'},

        venue: {type: 'string',required: true},
    }
};
接下来,您需要关联数据,如:

Events.findOne({id: '55a5f98ef7d707ba4f32ac75'}).exec(function(err, event){
    if (err) {
        console.log(err);
    } else {
        event.tagList.add('55a5f725f7d707ba4f32ac74');
        event.save(function(err, saved){
            if (err) {
                console.log(err);
            } else {
                console.log(saved);
            }    
        });
    }    
});
您还可以使用Blueprint保存数据,如:

Events.findOne({id: '55a5f98ef7d707ba4f32ac75'}).exec(function(err, event){
    if (err) {
        console.log(err);
    } else {
        event.tagList.add('55a5f725f7d707ba4f32ac74');
        event.save(function(err, saved){
            if (err) {
                console.log(err);
            } else {
                console.log(saved);
            }    
        });
    }    
});
创建数据-发布/事件

{
    tagList: [ '55a5f725f7d707ba4f32ac74' ], 
    title: "Snow City ", 
    blurb: "some data",
    description: "some data", 
    venue: "some address", 
}
更新数据-PUT/events/55a5f98ef7d707ba4f32ac75

{
    tagList: [ '55a5f725f7d707ba4f32ac74' ], 
    title: "Snow City ", 
    blurb: "some data",
    description: "some data", 
    venue: "some address", 
}

相关的

为了获取事件的标记列表,您需要填充
标记列表
属性

使用你可以点击的按钮

在控制器中,您将使用:

Event
  .findOne('55a5f98ef7d707ba4f32ac75')
  .populate('tagList')
  .exec(...);

谢谢你的回答。我尝试了你的程序,它再次给我一个空列表作为“标记列表”。我尝试了与类别模型、文章模型和标记的多对多关系,它对类别、文章和标记很有效,当我包含事件模型时,它就不起作用了。是的。。我肯定是bulkin。我对我的其他型号(如类别、文章和标签)遵循了相同的程序,在那里工作正常。我对事件和标记遵循了相同的过程,但它不起作用。我尝试创建新的模型“EventTags”模型,并尝试了与“Events”模型的多对多关系,同样的问题标记列表[]。这意味着,代码中的某个地方出现了错误。如何将EventTag与事件关联?通过Blueprint API?我检查了我所有的代码,代码中没有任何错误,我纠正了我的错误,如上所示。我将事件标签和事件关联起来,如上图所示。我也尝试过了,但仍然不起作用。我有这样的关系——类别与文章有N对N的关系,反之亦然,文章与标记有N对N的关系,反之亦然。当我将N对N的关系与事件和标记包括在一起时,它显示了标记列表的空数组。