在Sails JS中使用嵌套(关联)模型有一种更好的方法吗?

时间:2015-12-09 06:27:00

标签: javascript node.js sails.js waterline sails-mongo

我已将SailsJs应用程序连接到Mongodb数据库。我正在研究分析应用程序。这些是我的应用程序中的主要模型:

User Project Report Event

用户可以有很多项目,项目可以有很多报告,报告可以有很多事件。我使用模型属性的collectionmodel属性创建了这些关系。我的问题是为什么找到特定用户的事件是如此困难?我希望我能做到这一点:

User.
  find({id: id}).
  populate('projects').
  populate('reports').
  populate('events').
  then(function (eventsOfMyUser) {
  });

但由于只有projectsUser模型的属性,因此只有第一个填充符有效。不应该是一种更容易找到深层模型的方法,而不是在我的控制器或模型代码中编写令人讨厌且令人困惑的异步循环?

2 个答案:

答案 0 :(得分:3)

目前帆还没有任何嵌套人口。要参考的问题:https://github.com/balderdashy/waterline/issues/308

值得一提的是添加嵌套群体的拉取请求:https://github.com/balderdashy/waterline/pull/1052

拉出请求目前尚未合并,但您可以直接使用

来安装
npm i Atlantis-Software/waterline#deepPopulate

有了它,你可以做.populate('projects.reports ...)'之类的事情。

答案 1 :(得分:0)

现在有一个钩子允许你这样做。它正在用Offshore改变水线。 Offshore是Waterline的扩展分支,具有深度填充,缓存机制。

sails-hook-orm-offshore

现在路线图中有:

  • 关联标准(将默认条件添加到关联)
  • 交易