Node.js Mongoose:从集合中检索ObjectId数组
我的数据库有以下类型的文档用于类别集合Node.js Mongoose:从集合中检索ObjectId数组,node.js,mongodb,mongoose,robo3t,Node.js,Mongodb,Mongoose,Robo3t,我的数据库有以下类型的文档用于类别集合 { "_id" : ObjectId("56716afa403743492828aa07"), "cat_name" : "watches", "cat_parent_id" : [ ObjectId("56716afa403743492828aa01"), ObjectId("56716afa403743492828aa03") ] ......... } 我首先用Robomongo
{
"_id" : ObjectId("56716afa403743492828aa07"),
"cat_name" : "watches",
"cat_parent_id" : [
ObjectId("56716afa403743492828aa01"),
ObjectId("56716afa403743492828aa03")
]
.........
}
我首先用Robomongo创建了数据库,然后尝试使用mongoose获取数据,并创建了以下模式
var categorySchema = new Schema({
'cat_name' : String,
'cat_parent_id' : [{ type : mongoose.Types.ObjectId }],
.......
});
但当我通过以下回调得到结果时
Categories.find(function(err,categories){........});
cat\u parent\u id数组为空
编辑:
当我用Schema.Types.ObjectId或String替换mongoose.Types.ObjectId时,它可以工作。有人能提供原因吗?您需要为ObjectId类型添加引用:
var categorySchema = new Schema({
'cat_name' : String,
'cat_parent_id' : [{
type: mongoose.Schema.Types.ObjectId,
ref: 'Categories'
}],
.......
});
它不应该是{type:[mongoose.Types.ObjectId]}吗?看起来像是个傻瓜,原因是您需要使用
mongoose.Schema.Types
来声明架构属性mongoose.Types
用于特定类型的实例化,但与模式设置无关。