【发布时间】:2017-06-29 12:32:12
【问题描述】:
我一直在环顾四周,并没有看到任何明显的答案;抱歉,如果有,我错过了。
所以我现在有一个常规的 NodeJS + Mongo 堆栈,它一般都在工作。
我正在使用这样的架构(为本问题的目的进行了简化):
var ObjSchema = new Schema({
name: {
type: String,
default: '',
trim: true
},
description: String,
images: [ImageSchema],
...
});
现在,我不想麻烦在数据库中制作与 ImageSchema 匹配的实际图像,根据this,您显然可以将文档插入数据库,即使它们与集合模式不匹配.因此,为了测试目的,我只是在插入时放置一个 URL 列表,而不是匹配 ImageSchema 的对象列表(手动,再次用于测试目的)。
在交互式 mongo shell 中,我做了相当于:
db.objects.insert( { name: "Object", description: "My Collection", images: ["http://www.blah.com/img.jpg", "http://foo.com/another.jpg"]... })
交互式 mongo shell 告诉我这很好,并给了我“插入到 db”爵士乐。当我执行 db.objects.find() 时,BSON 在我输入时正确显示,其中包含“图像”的字符串列表,而不是与指定的 ImageSchema 匹配的内容。
现在问题来了。我在 Node 中而不是交互式 shell 中执行完全相同的命令,我得到的 BSON 对象与此等价:
{
_id: 54a9ede2da41c93989d3258d,
description: 'My Collection',
images:[], // THIS IS THE PROBLEM
name: 'Object'
}
如您所见,其他字段都很好;搜索正在正确检索对象,并且与架构匹配的所有字段都可以。但是,在节点搜索中,该文档的 images 属性是一个空列表,而 db.objects.find() 为我提供了我插入的 URL 列表,用于测试目的。
发生了什么事?知道如何在使用 Node 拉取时获取图像属性中的 URL 吗?
我使用的命令相当于:
Object.find({'name': 'object'}, function(err, obj) {
我正在使用 console.log(obj)。
【问题讨论】:
-
你在用猫鼬吗?
标签: javascript node.js mongodb mongoose mongodb-query