node.js - SailsJS - 关联记录与嵌入式集合

标签 node.js mongodb sails.js waterline sails-mongo

我正在使用 SailsJS/Waterline ORM 和 Mongo DB。这是一个实时应用程序,因此 sails sockets.io pub/sub 被大量使用。

我的应用程序中有一些实例需要多对多和多对一关联。

我相当确定我可以通过嵌入式集合实现多对*关系,但是水线关联似乎更清晰一些(例如,访问publishAdd())。

问题是:连接/链接数据(嵌入或关联)的最佳实践(对于我当前的堆栈)是什么?由于额外的查询,关联记录的性能是否会受到影响?

最佳答案

问自己这些问题:

<强>1。我是否要创建/读取这些关联或嵌入式集合?

或者

<强>2。我需要对这些集合进行大量更新/删除操作吗?

  1. 如果您的答案更倾向于 Q1,则可以使用嵌入式集合。它们通过一次仅查询一个集合来加快访问速度。实现起来也更简单。

但是

如果您的答案更倾向于 Q2,那么关联就是您所需要的。这种方法有很多好处:

  1. 更新/删除操作不需要更新/删除嵌入文档的所有集合中的嵌入文档。

  2. 由于您大量使用套接字,关联将有助于以更有组织的方式通过套接字通知模型的更改。

  3. 每个嵌入式集合都有自己的模型,因此也有自己的结构,这使得代码更有组织性、更容易维护且更易于理解。

如果您在实现过程中发现更多优点和缺点,请随时添加您自己的指导。祝你好运!

关于node.js - SailsJS - 关联记录与嵌入式集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31104929/

相关文章:

node.js - npm install : illegal operation on a directory 出现问题

mongodb - 更新 MongoDB 文档中的复杂对象

javascript - Mongo 无法与 Node.js 一起使用

sails.js - 在 Sails.js + Waterline 中查找和计数所有内容

node.js - SailsJS 水线与 bluebird promise

node.js - find() 与 sails 中的 equal 和 like

node.js - 使用 puppeteer 返回窗口对象

javascript - 关闭 CS :GO Dedicated Server via Node. js child_process

node.js - Cognito - 检查 idToken 的有效性

windows - 如何在 Windows 中连接到 MongoDB?