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

How to add another field in a join sails js

大家好,刚刚开始使用 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'
    }
  }
};

这很好用,我可以创建一个用户和一扇门,并将它们相互关联起来。但是我想在连接中有另一个字段,一个到期日期(假设用户只能在特定日期之前访问特定门)。

我该怎么做?

您需要创建多对多 through 关联。但是,到目前为止,它们还没有得到官方支持。

不过您可以手动执行此操作。

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

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'
    }
  }
};

google 搜索 sails.js many to many through 也可以帮助您找到所需的内容。