gpt4 book ai didi

json - Mongoose:将数据添加到返回的结果集中

转载 作者:可可西里 更新时间:2023-11-01 09:56:38 25 4
gpt4 key购买 nike

在 MEAN 环境中使用 mongoose,我需要将数据添加到返回的 mongoose 查询结果中。该查询返回作者列表。我想在查询结果中为每个作者添加一个缩略图字段(=缩略图的计算路径)。这是我的代码(为简单起见缺少循环代码):

var searchQuery = Author.find({ ...foo... }); 
searchQuery.limit(10);
//...

searchQuery.exec(function (err, authors) {
authors.set('thumbnail', 'test'); //causes error, no effect
res.json(authors);
});

我知道 mongoose 不会返回普通的 JS/JSON 对象,因此我需要先转换结果集才能对其进行操作。事实上,没有什么对我有用,我几乎尝试了一切:

searchQuery.lean().exec(function (err, authors) { //lean() option makes no difference

转换结果也不起作用,因为我不断收到“[...] 没有方法 'xy'”错误。

var tempresult = authors.toObject(); //--> causes error above
var tempresult = authors.toJSON(); //--> causes error above

我还可能错过了什么?

最佳答案

一旦您使用 lean() 将生成的文档转换为纯 JS 对象,它们将不会有任何可用的 Mongoose 模型实例方法,例如 set ,因此您需要使用普通的 JavaScript 对象技术直接操作它们:

searchQuery.lean().exec(function (err, authors) {
authors = authors.map(function(author) {
author.thumbnail = 'test';
return author;
});
res.json(authors);
});

如果你想将结果保留为 mongoose 文档,那么你需要将 {strict: false} 作为第三个参数传递给 set允许添加任意字段:

searchQuery.exec(function (err, authors) {
authors = authors.map(function(author) {
author.set('thumbnail', 'test', {strict: false});
return author;
});
res.json(authors);
});

关于json - Mongoose:将数据添加到返回的结果集中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27399048/

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