gpt4 book ai didi

node.js - 在将结果发送到 View 之前,无法更改路由中 MongoDB/MongooseJS 的结果(Node js)

转载 作者:行者123 更新时间:2023-12-03 02:33:33 26 4
gpt4 key购买 nike

在我的 route ,我试图在将其发送到我的 View 之前替换从数据库中获取的任何值。

在这种情况下,我尝试用用户的用户名替换对用户的引用。但我的 console.log 只是保持返回值不变。

app.get('/message/inbox', function(req, res) {
var _id = req.user._id;
var inbox = null;
var users = null;
async.parallel([
function(callback){
Inbox.find({to: _id}, callback);
},
function(callback){
User.find({}, callback);
}
],
function(err, result){
inbox = result[0];
users = result[1];
for(var i = 0; i < inbox.length; i++) {
for(var j = 0; j < users.length; j++) {
if(String(inbox[i].from) == String(users[j]._id)) {
inbox[i].from = users[j].local.username;
console.log(users[j].local.username);
console.log(inbox[i].from);
break;
}
}
}
console.log(inbox);
});
});

这是我的控制台返回的内容:

some@email.com
540468daeb56d5081ade600d
[ { _id: 54084cacf212815422aabe94,
from: 540468daeb56d5081ade600d,
to: 5406bf4c8a8acc88120922dc,
headline: 'Some Headline',
text: 'Some text',
__v: 0 } ]

最佳答案

从查找请求返回的是一个“ Mongoose 文档”,它实际上非常复杂,包含关联模式中的所有规则和方法。您无法在架构上设置的约束之外修改此设置。

因此,尽管序列化形式很简单,但该对象却相当复杂。你想要的只是一个基本对象,所以你可以随意修改它。简而言之,只需调用 .toObject() 即可获取“原始”JavaScript 对象,而无需其余糖分:

inbox = result[0].toObject();
users = result[0].toObject();

基本对象没有方法,也没有规则。修改掉。

关于node.js - 在将结果发送到 View 之前,无法更改路由中 MongoDB/MongooseJS 的结果(Node js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25681349/

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