sails.js - 如何自动填充 url/model/<id>/association 的 sails 蓝图的嵌套关联

标签 sails.js waterline

我有两个模型“用户”和“聊天”,具有多对多关联。

用户.js

module.exports = {

  attributes: {
    name: {
         type       : 'string'
        ,required   : true
    },

    email:{
         type   : 'string'
        ,email  : true
        ,required: true
        ,unique : true
    },
    enpassword : {
        type: 'string'
    },

    online : {
        type: 'boolean',
        defaultsTo: false
    },

    socketid: {
        type: 'string'
    },
    chats : {
      collection: 'chat',
      via: 'users',
      dominant: true
    }

};

聊天.js

module.exports = {
  attributes: {
    messages : {
      collection: 'message',
      via       : 'chat',
      dominant  : true
    },
    users : {
      collection: 'user',
      via       : 'chats'
    },
  }
};

当我调用 sails blueprint/user/1/chats 时,我得到了聊天列表,但每个聊天的用户关联未填充。

如何通过 Sails 查询实现此目的?

最佳答案

很好的问题。这是一个非常简单的方法来做到这一点。

首先,需要以下模块。

var nestedPop = require('nested-pop');

接下来,运行您的查询。

getPopulatedUsers = function(req, res) {
  User.find()
  .populate('chats')
  .then(function(users) {
    return nestedPop(users, {
      chats: [
        'messages',
        'users' // I actually wouldn't recommend populating this since you already have the users
      ]
    }).then(function(users) {
      console.log(users);
      res.json(users);
    });
  });
}

有关此内容的更多文档可以在以下链接中找到。 https://www.npmjs.com/package/nested-pop

关于sails.js - 如何自动填充 url/model/<id>/association 的 sails 蓝图的嵌套关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41119086/

相关文章:

node.js - Sailsjs Model.update 在 Controller 中不起作用

node.js - SailsJS/Waterline 无法在 Postgres 中创建模型

sails.js - 如何通过自动订阅发布/订阅来捕获具有更新的链接集合的事件?

sails.js - 具有强制一对多关系的级联错误

javascript - 将目录中的下划线模板连接到单个 js 文件并加载它以与主干应用程序一起使用

mysql - Sailsjs Mysql ORM 对同一个表字段进行多次查询

node.js - 水线: Trying to access a collection string that is not defined

mysql - 水线 - 字段总和的位置

node.js - Sequelize 1.7.3 中的时间戳

node.js - save() 回调中的数据与数据库之间的差异