Javascript 使用_id查找不在mongodb中工作
我有一个名为Releases的集合,其中包含一个名为product的子文档。 我的收藏如下:Javascript 使用_id查找不在mongodb中工作,javascript,mongoose,Javascript,Mongoose,我有一个名为Releases的集合,其中包含一个名为product的子文档。 我的收藏如下: { "_id": ObjectId("5b1010e4ef2afa6e5edea0c2"), "version": "abc", "description": "<p>abc</p>\n", "product": { "_id": ObjectId("5b100c9949f43c6b6f10a93f"), "name": "Product 1",
{
"_id": ObjectId("5b1010e4ef2afa6e5edea0c2"),
"version": "abc",
"description": "<p>abc</p>\n",
"product": {
"_id": ObjectId("5b100c9949f43c6b6f10a93f"),
"name": "Product 1",
"description": "<p>abc</p>\r\n",
"image": "Product 1.png",
"__v": 0
},
"releasedate": ISODate("2018-05-30T00:00:00Z"),
"__v": 0
}
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var Product = new Schema({
_id: Schema.Types.ObjectId,
name: String,
description: String,
image: String,
});
module.exports = mongoose.model('Product', Product);
但是如果我使用console.log(releases),它会给我一个空数组
我已经被这件事困扰了一段时间,并向你们寻求帮助。我做错了什么。我阅读了上的文档,并试图将其应用到我的代码中,但我无法使其正常工作
我的模式如下所示:
{
"_id": ObjectId("5b1010e4ef2afa6e5edea0c2"),
"version": "abc",
"description": "<p>abc</p>\n",
"product": {
"_id": ObjectId("5b100c9949f43c6b6f10a93f"),
"name": "Product 1",
"description": "<p>abc</p>\r\n",
"image": "Product 1.png",
"__v": 0
},
"releasedate": ISODate("2018-05-30T00:00:00Z"),
"__v": 0
}
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var Product = new Schema({
_id: Schema.Types.ObjectId,
name: String,
description: String,
image: String,
});
module.exports = mongoose.model('Product', Product);
您需要将
id
从string更改为mongooseobjectId
var id = req.body.productId
var query = {'product._id' : mongoose.Types.ObjectId(req.body.productId)};
Release.find(query)
.select('_id version description product releasedate')
.sort({releasedate: 1 })
.exec()
.then(releases => {
console.log(releases);
res.status(200).json(releases);
})
您确定您的id(
req.body.productId
)是正确的,并且是ObjectId或等于5b100c9949f43c6b6f10a93f
)的字符串吗?@rphonika感谢您的回复。是的,我仔细检查了它,也许一个解决方案是在ObjectId中转换您的id:var id=mongoose.Types.ObjectId(req.body.productId)
。这就成功了!非常感谢你!如果你愿意,你可以回答这个问题,我将把它标记为解决方案。否则我会用你的解决方案来回答。