Я использую Meteor с MongoDB и не могу понять, как получить доступ к одному полю из объектов массива объектов.Доступ к одному полю из объекта в массиве
Мои документы:
{
"_id" : "p6c4cSTb3cHWaJqpG",
"createdAt" : ISODate("2016-05-11T11:30:11.820Z"),
"username" : "admin",
"contacts" : [
{
"when" : ISODate("2016-05-11T11:30:32.350Z"),
"who" : "4YBufbE9PByJBkasy"
},
{
"when" : ISODate("2016-05-25T11:52:49.745Z"),
"who" : "z792kEEYbxyzyEAKp"
},
{
"when" : ISODate("2016-05-26T13:47:43.439Z"),
"who" : "4YBufbE9PByJBkasy"
},
{
"when" : ISODate("2016-05-26T13:48:22.828Z"),
"who" : "4YBufbE9PByJBkasy"
}
]
}
Я хочу, чтобы проверить, если userId
находится в какой-либо из объектов, в частности, в who
полях.
Мой Серверный код:
var me = Meteor.userId();
var findMe = Meteor.users.findOne(me);
if (_.include(findMe.contacts, {who: 4YBufbE9PByJBkasy})){
console.log("found in array");
}else{
console.log("Not found in array");
}
}
Я попробовал это несколько различных способов, но придумал ничего.
Когда я console.log(findMe.contacts);
, он возвращает весь массив, как он должен. но когда я пытаюсь console.log(findMe.contacts.who);
, он возвращает undefined
.
Просто нужно какое-то направление, как получить доступ к полю массива объектов. Благодаря!
'findMe.contacts' является массивом, он не имеет свойство' who' , для доступа к одному из элементов массива вам необходимо указать индекс: 'findMe.contacts [0] .who' –
Это имеет смысл. Я попробовал это, но, увидев твой, я понял, что мой синтаксис ошибочен. Итак, как я могу проверить все объекты для строки в поле 'who'? Выполнение чего-то типа «подсчет» по количеству объектов, выполняющих цикл через каждый, кажется больше работой, чем необходимо, но я мог ошибаться. – gkrizek
Вы не можете проверить каждый элемент, не проверяя каждый элемент :-) Кроме того, с небольшим количеством редактирования вы могли бы иметь [минимальный, полный, проверяемый пример] (http://stackoverflow.com/help/mcve). – 1983