0
在我的應用程序中,我有一個存儲用戶的模型。每個用戶可以阻止其他用戶,所以我創建了這個模型持有阻止用戶ID的條目:如何修改我的mongodb/mongoose查詢,以便返回更詳細的json?
...
blocked_user_ids: {type: [String]},
...
我還創建了一個端點,讓我得到阻止用戶的列表中給定的user_id
。因爲我想有一個名單上的每個用戶的詳細信息,我不得不做以下查詢:
usersRoutes.get('/:id/blockedUsers/', functions.validateRequestsGET, function(req, res){
var userId = req.params.id;
async.auto({
one: function(callback){
findBlockedUsersIdsOfGivenUser(userId, callback);
},
two: ['one', function(callback, results){
getBlockedUsersDetails(results.one, callback);
}],
final: ['one', 'two', function(callback, results) {
res.status(200).send(results.two);
}],
}, function(err) {
if (err) {
sendError(res, err);
return;
}
});
});
function findBlockedUsersIdsOfGivenUser(userId, callback) {
var query = User.findOne({_id: userId}).select("blocked_user_ids");
query.exec(function(err, blockedUsersIds){
if(err) {
return callback(err);
}
return callback(null, blockedUsersIds.blocked_user_ids);
});
}
function getBlockedUsersDetails(blockedUsersIds, callback) {
var query = User.find({_id: {$in: blockedUsersIds}});
query.exec(function(err, blockedUsersDetails) {
if(err) {
return callback(err);
}
return callback(null, blockedUsersDetails);
});
}
運作良好,回到我在哪裏,每個節點的JSON舉行有關特定用戶信息的JSON。
不過,現在我的模型改變了,目前我已經到字符串數組變成一個結構:
...
blocked_user_ids: [{
user_id: {type: String, required: true},
is_anonymous: {type: Boolean, required: true}
}],
...
現在,除了在我JSON獲取用戶信息,我需要修改我的查詢,以使輸出json包含有關該標誌的信息is_anonymous
- 我想將該標誌的值添加到代表每個用戶的每個json節點。你能幫助我嗎?
謝謝你的這個答案,我想,和代碼工作沒有任何錯誤或錯別字:)不過,我不知道在輸出json中看到「is_anonymous」標誌,它只包含所有'用戶'的細節......還有什麼可能讓你想到我可以嘗試嗎? – user3766930
嗯現在當我在想 - 這可能是因爲我的用戶模型中沒有實際的字段'is_anonymous' - 你認爲這可能是原因嗎? – user3766930
@ user3766930我在代碼中更改了forEach循環。 – Molda