如何在连接sails js中添加另一个字段

时间:2015-04-25 04:45:34

标签: javascript mongodb sails.js nosql

嘿,刚刚开始使用Sails js和mongoDB,我有点困惑。

我有两个具有多对多关系的模型:

user.js的

module.exports = {
  attributes: {
    username: 'STRING',
    password: 'STRING',
    doors:{
        collection: 'door',
        via: 'users',
    }
  }
};

和Door.js

module.exports = {
  attributes: {
    name: 'STRING',
    users:{
        collection: 'user',
        via: 'doors'
    }
  }
};

这很好用,我可以创建一个用户和一个门,并将一个与另一个相关联。但是我希望在联接中有另一个字段,一个到期日期(假设用户只能在特定日期之前访问特定的门)。

我将如何做到这一点?

1 个答案:

答案 0 :(得分:1)

您需要创建多对多的关联。但是到目前为止还没有正式支持。

但您可以手动执行此操作。

现在,在这个例子中,为用户获取所有门可能有点困难,反之亦然,因为你必须进行第二次查找。但是,您可以使用此设置执行以下操作:

UserDoors
    .find()
    .where({expires:{'<':new Date()}})
    .populate('doors')
    .populate('users')
    .exec(/*....*/)

你的模特

User.js

module.exports = {
  attributes: {
    username: 'STRING',
    password: 'STRING',
    doors:{
        collection: 'userDoors',
        via: 'users',
    }
  }
};


userDoors.js
module.exports = {
  attributes: {
    doors:{
        model: 'door'
    },
    users:{
        model: 'user'
    },
    expires: 'datetime'   
  }
};



and Door.js

module.exports = {
  attributes: {
    name: 'STRING',
    users:{
        collection: 'userDoors',
        via: 'doors'
    }
  }
};

sails.js many to many through进行谷歌搜索,以帮助您找到所需内容。