【问题标题】:Mongoose populate document猫鼬填充文档
【发布时间】:2021-02-11 05:57:41
【问题描述】:

我想创建一个文档,保存它,然后返回它并填充一个字段。这是我的代码,但填充的字段未定义(而不是用户名):

var doc = await new Documents({
  authors: [currentUserId, otherUserId]
});
doc.save();
return doc.populate("authors", "name");

(这个函数是异步的)。我确信用户 ID 是正确的,因为当我稍后去获取此文档时,一切正常(文档的作者已正确填充)

Documents.find(/* ... */).populate("authors", "name").exec(/* ... */);

如何在第一个示例中正确填充?

【问题讨论】:

  • doc.save().then(t => t.populate('my-path').execPopulate())
  • 谢谢!我不知道 save 有 then 功能。不过,我将如何退货?

标签: mongoose mongoose-populate


【解决方案1】:

您需要使用execPopulate() 函数来填充文档

doc.populate("authors", "name").execPopulate();

Documents.find(/* ... /).populate("authors", "name").exec(/ ... */);

在这种情况下,您将在 查询 上调用填充函数,因此 .populate() 可以正常工作。但是

doc.populate("作者", "姓名");

这里是在document中调用populate函数,所以这里需要调用execPopulate()来实际执行populate()函数。

你可以阅读更多关于这个here


另外,你在错误的地方使用了await

var doc = new Documents({
  authors: [currentUserId, otherUserId]
});
// await needs to be here
await doc.save();
return doc.populate("authors", "name");

【讨论】:

    猜你喜欢
    • 2021-04-26
    • 2013-10-05
    • 2021-10-07
    • 2016-08-17
    • 2017-05-07
    • 2015-11-27
    • 2015-07-28
    • 2014-09-06
    • 2015-07-13
    相关资源
    最近更新 更多