Express JS在将非字段属性返回给客户端之前,将其注入Mongoose模型的正确方法是什么
使用Mongoose模型方法Express JS在将非字段属性返回给客户端之前,将其注入Mongoose模型的正确方法是什么,express,mongoose,Express,Mongoose,使用Mongoose模型方法findOne,我收到一个模型。现在,我想在将该模型发送到客户机之前对其进行定制,在该模型中增加几个属性 然而,目前我发现的唯一方法是将该模型转换为普通对象并扩展该对象 我不知道有没有更好的方法 以下是我的冗长代码,目的很简单: Topic.find({}).exec(function (err, topics) { var i, topic_obj, topic_obj_list; topic_obj_list = []; if (err) { ret
findOne
,我收到一个模型。现在,我想在将该模型发送到客户机之前对其进行定制,在该模型中增加几个属性
然而,目前我发现的唯一方法是将该模型转换为普通对象并扩展该对象
我不知道有没有更好的方法
以下是我的冗长代码,目的很简单:
Topic.find({}).exec(function (err, topics) {
var i, topic_obj, topic_obj_list;
topic_obj_list = [];
if (err) { return next(err); }
for (i = 0; i < topics.length; i++) {
topic_obj = topics[i].toObject();
if (req.user.is_following) {
topic_obj.is_following = true;
} else {
topic_obj.is_following = false;
}
topic_obj_list.push(topic_obj);
}
return res.json(200, topic_obj_list);
});
Topic.find({}).exec(函数(err,topics){
变量i、主题对象、主题对象列表;
主题对象列表=[];
if(err){返回下一个(err);}
对于(i=0;i
p/S:我已经尝试过简单的解决方案,如:topics[I]。is_following=true,但它不起作用。您可以将其缩短为以下内容:
Topic.find({}).exec(function (err, topics) {
if (err) { return next(err); }
return res.json(topics.map(function(topic) {
return topic.set(
'is_following',
req.user.is_following ? true : false,
{ strict : false }
);
}));
});
说明:
对topics.map
数组的每个项目运行一个函数;从函数返回的值在topics
返回的结果中结束李>map
- 使用
可以添加/覆盖Mongoose文档的字段;当topic.set(字段,值,[{strict:false}])
为strict
时,该字段不必存在于架构中李>false