2014-03-03 85 views
7

猫鼬的请求,我有我的文档doc之后是查询猫鼬为现有字段

这里的结果返回undefined是使用

var searchSchema = new mongoose.Schema({ 
    original : String, 
    images : [String], 
    image: String 
}); 

模型架构:

var searchModel = mongoose.model('Search', searchSchema); 

使用的代码:

searchModel.findOne({original : input}, function (err, doc) { 
    if (err) { 
     console.log(err); 
    } 
    if (typeof doc !== "undefined") { 
     console.log(doc); 
        console.log(doc.image); 
    } 
}); 

第一console.log

{ 
    _id: 531401bf714420359fd929c9, 
    image: 'http://url.com/image.jpg', 
    original: 'lorem ipsum dolor sit amet' 
} 

第二返回undefined,但前一个确实显示现有image属性,这意味着它的存在。

我的模式没有什么特别的东西,所以我不明白什么可以被这里发生的一切..

回答

5

当您没有将该字段添加到模式时,您会看到此内容。

添加image到您的架构,它应该工作:

image: String 
+0

它已经是。我尝试删除所有文档,更改字段名称并检查以确保它位于模式中,然后重新添加所有内容,并且当属性存在时(并且我甚至可以在我的查询中选择它),但我尝试时未定义奇怪地访问它 – Malharhak

+0

@Malharhak你可以更新你的问题,包括定义模式和模型的代码,并执行创建'doc'的查询吗? – JohnnyHK

+0

我使用这些信息对其进行了更新 – Malharhak

-1

尝试使用括号标记类似:

doc['image'] 

如果一切正常,我我不能解释你为什么,但也许有人可以对此有所了解?

+0

是的,我尝试过,但它没有改变任何东西 – Malharhak

+0

你能提供你正在做的查询吗? – inwpitrust

+0

我在问题 – Malharhak

0

这是做该对象的toString()方法返回_doc财产的事实。您可以使用: console.log(doc._doc.image);