#node.js #mongodb
Вопрос:
Пытаюсь найти сведения об одном документе по идентификатору с помощью POST API, но API возвращает error 500
данные с помощью MongoDB и Node.js.
Схема
{
"_id": {
"$oid": "5cad89cabfb35db56688556c"
},
"articleid": "c4a3c72a-f4ec-11e7-bec2-b083fe9a696b",
"md5id": "8e0d6ca665a977cc825bd90dc1751d53",
"headline": "Stepping up",
"subtitle": "",
"type": "PRINT",
}
Model.js
var mongoose = require('mongoose');
var schema = new mongoose.Schema({
Title: String
},
{
collection: 'impactliveupdated'
});
module.exports = mongoose.model('Model', schema);
controller.js
articlesById = function (req, res) {
var articleids = req.body.articleids;
var query = {
};
query.articleid = {
$in: articleids
};
articlesModule.findOne(query, function (err, impacts) {
if (err) {
console.log("error 6");
console.log(err);
res.status(500);
res.send("internal error");
} else {
res.status(200);
console.log("sending data");
// console.log(impacts);
res.json(impacts);
}
});
}
если возможно, помогите мне исправить это, я новичок в MEAN stack!
Комментарии:
1. Есть ли articleId в схеме? Не отображается в коде.
2. да Идентификатор статьи находится в поле документа
3. В вашей схеме отображается только один заголовок поля. Вы путаете _id с articleid? Вы также можете использовать findById.
4. @TusharShahi У меня есть имя поля
articleid
, по которому я пытаюсь найти, нужно ли мне его указыватьarticleid
Model.js schema
?5. ДА. будет лучше, если вы это сделаете. Кроме того, я спрашивал о статьях. оператор $in работает с массивами справа. Если идентификатор статьи из документа находится внутри [Идентификаторы статей], который отправляется в теле вашего запроса, он вернет документ.
Ответ №1:
Во-первых, вам не нужно использовать оператор $in, как предлагает @Tusharshahi, и вы можете использовать прямой запрос findOne.
articlesById = function (req, res) {
var articleid = req.body.articleid;
articlesModule.findOne({articleid:articleid}, function (err, impacts) {
if (err) {
console.log("error 6");
console.log(err);
res.status(500);
res.send("internal error");
} else {
res.status(200);
console.log("sending data");
res.json(impacts);
}
});
}