航行很多很多模型协会都无法保存

时间:2014-08-09 17:49:32

标签: sails.js waterline

我使用最近发布的风帆v0.10.2,我无法使用多对多模型关联。这是我尝试构建的内容:

// models/Group.js
module.exports = {

    identity: 'Group',

    attributes: {
    ...
        admins: {
            collection: 'User',
            via: 'groups',
            dominant: true
        },
    ...

// models/User.js
module.exports = {

    identity: 'User',

    attributes: {
    ...
        groups: {
            collection: 'Group',
            via: 'admins'
    },
    ...

据我所知,这应该在这些模型之间建立多对多关联。它们都存储在sails-memory上进行开发。

// function is called when a group-creation form is filled in the frontend.
create: function(req, res, cb) {

    Group.create( req.params.all() ).exec( function(err, group) {

        if (err) { console.log(err); return cb(err); }
        else { 
            group.admins.add(req.user.id);
            group.save(function(err){
                if(err){console.log(err);}
                else {
                    console.log('binding user to group:');
                    console.log(req.user);
                    console.log(group);
                }

            });

            res.json(group); 

        }

    });


},

输出如下:

binding user to group
{ username: me
  .. some other things ..
  createdAt: Sat Aug 09 2014 10:13:15 GMT-0700 (PDT),
  updatedAt: Sat Aug 09 2014 10:13:24 GMT-0700 (PDT),
  id: 1 }
{ name: 'this is my group',
  description: 'this is mah desccription',
  tags: [ 'tag' ],
  createdAt: Sat Aug 09 2014 10:13:43 GMT-0700 (PDT),
  updatedAt: Sat Aug 09 2014 10:13:43 GMT-0700 (PDT),
  id: 1 }

对我来说意味着用户模型的groups字段没有被修改,因为它不仅不存在,而且updatedAt字段没有注册更改。有一些可能的原因,这是我能想到的失败:

  • Sails内存不支持模型关联(即使我正在运行v0.10.2)

  • 发生了非常异步和奇怪的事情。

  • 涉及.populate()函数的东西。

  • 完全是另一回事。

1 个答案:

答案 0 :(得分:1)

事实证明,我对数据库和连接一无所知。我的假设基本上是这样的:

我的模型有一个admins属性,Groups.admins.add()函数会找到User模型,只是在那里放置一个用户模型的链接,这样res.json(group)将返回该组具有自己填充User对象的admins属性。

事实证明并非如此,您需要手动.find()然后.populate('fieldName')模型,这可能会在数据库端节省大量开销。

我最初有10个嫌疑人(其中4个是上面的嫌疑人)并且在敲出它们的时候,我在sails-memory github上轻轻地打开了一个问题,一个友好的香蕉帮我解决了。

https://github.com/balderdashy/sails-memory/issues/13#issuecomment-51862742

相关问题