这是代码:
usermodel.findOne({ user: req.session.user }, function (err, user){
usermodel.find({ _id: {$in: user.follow } }, { user: true }, function (err, users){
usermodel.find({ author: { $in: users.user }}, function (err, images){
console.log(users);
console.log(images);
});
});
这就是Schema:
var userschema = new mongoose.Schema({
user: String,
follow: [String],
message: [{
title: String,
author: String,
message: String
}],
});
follow
数组包含实际用户关注的用户的_id
个。第一个usermodel.find
y获取follow
数组。使用第二个usermodel.find
,我得到用户名:
[ { _id: 50fd9c7b8e6a9d087d000006, user: 'Mrmangado' },
{ _id: 50fd9d3ce20da1dd7d000006, user: 'kirbo' } ]
而且,对于第三个和最后一个usermodel.find
,我正在尝试获取用户的消息。我在之前的usermodel.find
中获取了用户的名称,并且消息的author
与创建它的用户具有相同的值。问题是我得到用户名字的方式,我想我必须有这样的用户名字:
[{ user: 'Mrmangado' },
{ user: 'kirbo' }]
如果我收到这样的数组,$in
语句将完美运行。有没有办法得到像这样的输出......?
谢谢你的进步!
答案 0 :(得分:2)
你确定这是你想要的吗? author
字段是用户名,而不是_id
?如果是这样,您可以映射结果对象以获取名称。
var usernames = users.map(function(u) { return u.user; });
//= ["Mrmangado", "kirbo"]