Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';无法在Javascript中检索对象属性_Javascript_Mongoose - Fatal编程技术网

Can';无法在Javascript中检索对象属性

Can';无法在Javascript中检索对象属性,javascript,mongoose,Javascript,Mongoose,目前,我正在尝试从mongoose返回的javascript对象中检索特定属性。 当打印整个对象时,我可以看到该属性,但当尝试使用它时,我会得到一个未定义的属性。代码如下: Match.findOne({id: match.id}, function (err, match) { console.log(match) console.log(typeof match) console.log(match.id) console.log(match.winner)

目前,我正在尝试从mongoose返回的javascript对象中检索特定属性。 当打印整个对象时,我可以看到该属性,但当尝试使用它时,我会得到一个未定义的属性。代码如下:

Match.findOne({id: match.id}, function (err, match) {
    console.log(match)
    console.log(typeof match)
    console.log(match.id)
    console.log(match.winner)
})
其输出为:

{ _id: 552c7f2925efcbc88ccc55bf,
    id: 499142595,
    region: 'br',
    winner: 200,
    championsLose: [ 25, 96, 81, 113, 63 ],
    championsWin: [ 37, 238, 201, 268, 81 ] 
}
object
499142595
undefined
尽管“赢家”的财产显然存在。 有什么想法吗


更新:在上述代码及其结果中添加了更多日志记录

奇怪的是,与键“\u id”关联的值周围没有引号:

这似乎表明它实际上不是一个对象。当然,这也解释了为什么
match.winner
没有定义。我将执行
console.log(typeof match)
并查看它的内容。

如果对象/属性在
console.log()之后发生更改,则console更新(“实时更新”)最后的引用。我最近使用chrome时感到疼痛

可能是这样

chrome
中查看此示例,不知道此问题在节点控制台或您正在使用的工具中的表现

obj = {a:"b",b:"c"};
console.log(obj);  // logs Object { b: "c" } not {a:"b",b:"c"}
delete obj.a;
console.log(obj);// logs Object { b: "c" }

您可能在代码的后面删除了match.winner属性。似乎只有这种情况

最后,问题不在那段代码中,而是在模型定义中。变量名未正确更新,因此仍在使用旧名称:

var mongoose = require('mongoose');

module.exports = mongoose.model('Match',{
    id: Number,
    region: String,
    championsWin: Array,
    championsLose: Array,
    winnerTeamId: Number
});
合适的模型应为:

module.exports = mongoose.model('Match',{
    id: Number,
    region: String,
    championsWin: Array,
    championsLose: Array,
    winner: Number
});

非常感谢你的帮助

你可以把一个虚拟对象作为一个提琴或代码片段吗?^FIDLE for mongdb/mongoose?也许你在某个地方的模型上定义了一个虚拟对象,它在愚弄你?问题出在其他地方;这个代码在我看来很好。我想用另一个变量名替换“match”,看看它会有什么影响,因为我认为使用相同名称引用的全局变量可能有问题。我不相信
控制台.log(match)
正在输出一个对象-这就是为什么
match.winner
是未定义的对象,它是一个
ObjectId
,它覆盖
toString
。此外,即使是这样,你的答案也毫无意义。
module.exports = mongoose.model('Match',{
    id: Number,
    region: String,
    championsWin: Array,
    championsLose: Array,
    winner: Number
});