gpt4 book ai didi

node.js - 深度填充的 Sails 解决方法

转载 作者:搜寻专家 更新时间:2023-10-31 23:04:27 25 4
gpt4 key购买 nike

我正在尝试深入填充一个集合。

例如

// UnitType.js
name: { type: 'string' }

// Unit.js
unitType: {
model: 'unitType',
via: '_id',
required: true,
index: true
}

// Product.js
unit: {
model: 'unit',
via: '_id',
required: true,
index: true
},

问题是,据我所知,从互联网研究中可以看出,像

Product.find().populate('unit.unitType');

当前不支持 sails 。目前要达到我想要的结果

  • 用填充unit查询产品
  • 使用 `product.unit.unitType`` 中的 id 查询 UnitTypes
  • .map() product.unit.unitType 和响应

这当然远非理想。我还尝试在模型中使用 toJSON 来“预填充”unitType -> 不起作用,因为这不支持 Promises。

关于这个问题的so和pr在github上有不少线程,但到目前为止我还没有找到解决这个问题的方法。有什么办法可以使它变得更好吗?

最佳答案

您可以尝试替换 Waterline ORMOffshore ORM .有一个 sails 钩可以做到这一点 - sails-hook-orm-offshore .

它很容易在您现有的项目中实现,因为它的 Waterline 分支具有更多功能。我发现的唯一缺点是 sails-hook-validation 停止工作。

如何安装

npm install sails-hook-orm-offshore --save

配置

.sailsrc

{
"hooks": {
"orm": false,
"pubsub": false
}
}

默认值

config/globals.js

adapters: true,
models: true

用法

现在您将被允许deep populate在您的查询中。例如(来自文档):

User.find()
.populate('foo.bar', { name: 'foo' }) //populate foo into user and bar into foo
.exec(function(err, users) {
console.log(users[0].foo.bar.name) // 'foo'
});

第二个选项

用水线合并深度填充

npm i Atlantis-Software/waterline#deepPopulate

关于node.js - 深度填充的 Sails 解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36675683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com