Я просматриваю книгу, и код не работает. Все в Google и здесь указано, что код прав! Она не работаетКак выбрать субдокум манго по id с помощью мангуста?
Loc
.findById(req.params.locationid)
.select('name reviews')
.exec(
function(err, location) {
if (location.reviews && location.reviews.length > 0) {
// this is the problem:
review = location.reviews.id(req.params.reviewid);
if (!review) {
sendJSONresponse(res, 404, {
"message": "reviewid not found"
});
} else {
response = {
location: {
name: location.name,
id: req.params.locationid
},
review: review
};
sendJSONresponse(res, 200, response);
}
}
}
);
id
не является функцией, поэтому id()
возвращает ничего.
Я пробовал жестко кодировать идентификационный номер, устал много вещей, которые я нашел в Интернете, но суть в том, что location.reviews.id
- это просто значение. Я также сделал Loc.findById(req.params.locationid).reviews ...
: where
, findById
, ничего! Я тоже много времени искал _id
и многое, что пошло с этим
Я мог бы просмотреть обзоры и остановиться, если матч reviews.id
, но я хочу знать, что пытался сделать автор.
Я так понимаю, что location
является Java-объект, это естественно, чтобы не быть в состоянии использовать id
как функция
Это схема
var reviewSchema = new mongoose.Schema({
author: String,
rating: {type: Number, required: true, min: 0, max: 5},
reviewText: String,
createdOn: {type: Date, "default": Date.now}
});
var locationSchema = new mongoose.Schema({
name: {type: String, required: true},
address: String,
rating: {type: Number, "default": 0, min: 0, max: 5},
facilities: [String],
coords: {type: [Number], index: '2dsphere'},
openingTimes: [openingTimeSchema], //nesting a schema
reviews: [reviewSchema]
});
Весь модуль кода (хотя я бы поделился им, я не выбрал правильный кусок):
module.exports.reviewsReadOne = function(req, res) {
console.log("Getting single review");
if (req.params && req.params.locationid && req.params.reviewid) {
Loc
.findById(req.params.locationid)
.select('name reviews')
.exec(
function(err, location) {
if (location.reviews && location.reviews.length > 0) {
review = location.reviews.id(req.params.reviewid);
if (!review) {
sendJSONresponse(res, 404, {
"message": "reviewid not found"
});
} else {
response = {
location: {
name: location.name,
id: req.params.locationid
},
review: review
};
sendJSONresponse(res, 200, response);
}
}
}
);
} else {
sendJSONresponse(res, 404, {
"message": "Not found, locationid and reviewid are both required"
});
}
};
Чем вы поможете?
Пожалуйста, добавьте схему 'Loc' в свой вопрос? В этом документе [doc] (http://mongoosejs.com/docs/subdocs.html) у DocumentArrays есть специальный метод 'id' для поиска документа по его' _id' – zangw
@zangw Я просто добавил схему. Я прошел через этот документ так много времени и не могу заставить его работать – relidon
Является ли 'req.params.reviewid' действительным' ObjectId'? какова ценность 'req.params.reviewid'? – zangw