У меня есть очень простое приложение, которое создает отчеты. У меня есть часть, которая должна запрашивать и извлекать _id из базы данных mongo. Как бы то ни было, я не могу заставить работать поиск по _id. Имейте в виду, просто find() работает, когда мне нужно показать все отчеты. Я искал Overflow и пробовал кучу разных решений, которые я видел, но ни одно из них не работает...:
ObjectID(req.params.string)
new ObjectID(req.params.string)
BSON.ObjectID(req.params.id)
db.collection.serializer.ObjectID....etc
Вот текущий код для этой части, и я использую новейшие версии mongoDB и драйвера (2.6 и 1.4), спасибо за любую помощь, ребята!: фрагмент из reportRoutes.js var mongo = require('mongodb');
var Server = mongo.Server,
Db = mongo.Db,
BSON = mongo.BSONPure;
ObjectID = mongo.ObjectID;
exports.findById = function(req, res) {
var id = new ObjectID.createFromHexString(req.params.id);
console.log('Retrieving report: ' + id);
db.collection('reports', function(err, collection) {
db.collection.findOne({ '_id': (id)}, function(err, item) {
res.send(item);
});
});
};
Фрагмент из Server.js
app.get('reports/:id', reportRoutes.findById);
Вот вывод консоли, когда я иду
http://localhost:3000/reports/53d2c100132358560c000001:
Uncaught TypeError: Невозможно прочитать свойство getCurrent неопределенного popup.js: 17
вот документ монго, когда я пойду
http://localhost:3000/reports/ <-just does a collection.find()
{
"_id": "53d2c100132358560c000001",
"name": "Whatheheck",
"author": "cornhole",
"date": "07232014",
"costs": "200",
"cash": "2070",
"avoidances": "9000",
"reuse": "3000",
"recycle": "20000",
"time": "",
"description": "",
"picture": null
}
Вот документ, извлеченный из mongoshell с помощью db.reports.find().pretty()
{
"_id" : ObjectId("53d2c100132358560c000001"),
"name" : "Whatheheck",
"author" : "cornhole",
"date" : "07232014",
"costs" : "200",
"cash" : "2070",
"avoidances" : "9000",
"reuse" : "3000",
"recycle" : "20000",
"time" : "",
"description" : "",
"picture" : null
}
_id
? - person JohnnyHK   schedule 26.07.2014_id
в документе на самом деле был ObjectID, а не строкой. - person JohnnyHK   schedule 29.07.2014