使用Mongoose和express,同时检索朋友列表,
我以一种我需要简化的格式获取我不需要的数据
如何在朋友子文档中隐藏_id和状态?
我想要一个对象数组来填充每个对象的id字段,而不是其他所有对象,包括架构中的_id和status。
例如。
var friends = [{firstName: "User 1", lastName: "User 1", username: "user1"}, {firstName: "User 2", lastName: "User 2", username: "user2"}]
目前看起来像这样
var UserSchema = new Schema({
friends: [
{
id:
{
type: Schema.Types.ObjectId, ref: 'User'},
status: Number
}
}
]
});
app.get('/getFriends', requireLogin, function(req, res) {
User.findOne({ _id: req.user.id }, 'friends')
.populate({
path: 'friends.id',
model: 'User',
select: 'username firstName lastName -_id'
})
.exec(function(err, friends) {
res.json(friends);
})
})
friends: [
{
id: [Object],
status: 2,
_id: 590bbb88858367c9bb07776e
},
{
id: [Object],
status: 2,
_id: 590bbb95858367c9bb07776f
}
]
id Object
firstName: "User 1", lastName: "User 1", username: "user1"

答案 0 :(得分:0)
使用select函数仅选择所需的属性
.select('firstName lastName username').exec(function(err, friends) {
res.json(friends);
})
或使用map
和delete
的组合删除键/值对
var friends = [{
id: 1,
status: 2,
_id: 590
},
{
id: 2,
status: 2,
_id: 590
}
];
friends = friends.map(function(v) {
delete(v._id);
return v;
});
console.log(friends);