В моем приложении у меня есть модель для хранения пользователей. Каждый пользователь может блокировать другие пользователь, поэтому я создал запись в этой модели, которая содержит идентификаторы заблокированных пользователей:Как я могу изменить свой запрос 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, мне нужно изменить мои запросы так, чтобы output json содержит информацию о флаге is_anonymous
- Я хочу добавить значение этого флага в каждый json-узел, который представляет каждого пользователя. Можете ли вы мне помочь?
поблагодарить вас за этот ответ, я попробовал, что и код работал без каких-либо ошибок или опечаток :) Однако, я не см. флаг 'is_anonymous' в выходном json, он содержит только все данные' user' ... Есть ли что-то еще, что может прийти вам на ум, что я мог бы попробовать? – user3766930
hm теперь, когда я думаю - возможно, потому, что у меня нет фактического поля 'is_anonymous' в моей модели пользователя - вы думаете, что это может быть причиной? – user3766930
@ user3766930 Я изменил forEach цикл в коде. – Molda