Node.js 帆:如何使用水线连接两个不同的模型

Node.js 帆:如何使用水线连接两个不同的模型,node.js,sails.js,waterline,Node.js,Sails.js,Waterline,在MVC中,人们使用连接查询来连接两个不同的表,但在sails.js中,我必须使用什么?水线有什么办法 答案基于您使用的数据库 例如,您需要在Mongo中填充值才能不加入。或者,如果您使用的是MySQL或类似的数据库,则需要连接表 简而言之,所有这些东西都是通过水线覆盖的。因此,您可以在api/models中使用关联声明模型。连接和填充在吃水线适配器下执行 例如,您有User和Comment // api/models/User.js module.exports = { attribute

在MVC中,人们使用连接查询来连接两个不同的表,但在sails.js中,我必须使用什么?水线有什么办法

答案基于您使用的数据库

例如,您需要在Mongo中填充值才能不加入。或者,如果您使用的是MySQL或类似的数据库,则需要连接表

简而言之,所有这些东西都是通过水线覆盖的。因此,您可以在
api/models
中使用关联声明模型。连接和填充在吃水线适配器下执行

例如,您有
User
Comment

// api/models/User.js
module.exports = {
  attributes: {
    name: {
      type: 'string'
    },
    comments: {
      collection: 'Comment',
      via: 'user'
    }
  }
};

// api/models/Comment.js
module.exports = {
  attributes: {
    text: {
      type: 'string'
    },
    user: {
      model: 'User',
      via: 'comments'
    }
  }
};
然后执行
User.find()
,并从数据库中获取已加入\已填充的表

但是,如果要执行手动连接,可以在模型实例上使用
.populate()
方法。例如:

// api/controllers/AnyController.js
module.exports = {
  action: function(req, res) {
    User
      .findOne('ID_HERE')
      .populate('comments')
      .then(function(result) {})
      .catch(function(error) {});
  }
};
您可以在此处阅读有关
填充
的更多信息-