如何访问此对象的属性?

我在node.js和socket.io工作,基本上我听一个套接字disconnect事件,并调用一个方法。 app.update()

 socket.on('disconnect', function (data) { app.update(); }); // This is in another file, and the id is static, but I am more concered with the // messages object that is passed through. update: function() { models.Message.find({_id: "532c8d9ce889ed4c21538630"}, function(err, messages) { console.log(messages) }); } 

这是messages对象的样子

 [ { username: 'Marcus', connected: true, _id: 532c8d9ce889ed4c21538630, __v: 0 } ] 

我不知道如何访问一个对象的方括号,但基本上我想更新对象,以便我可以设置connected为false。

我尝试了messages['connected']

你有一个对象的数组。 所以你需要访问数组的第一个元素,然后是“连接”属性。 做这个:

 messages[0].connected = false; 

messages可能包含多个结果,所以你有一个数组。

实际上, messages总是一个数组,因为你正在使用find ,它需要多个结果。 如果你使用findOne它不会是一个数组,而是一个文档。

你应该尝试例如.. messages[0].username

如果你想更新其中的每一个:

 messages.forEach(function(message) { message.connected = false; });