2016-06-12 2 views
1

Мне нужно, чтобы переменная JS была равна полю MongoDB, и теперь с кодом, который у меня есть, он работает, но не так, как предполагалось. Это дает мне целый объект, но я только то, что строковое значение, которое было присвоено полю. Например, вы можете иметь документ, содержащий полеКак сделать переменную JS равной полю MongoDB?

{name: "dylan"} 

хорошо я не хочу, чтобы все, что вернулся, я просто хочу строковое Дилан. вот код, который я пробовал.

var game = SearchLobby.findOne(
    {profile: Meteor.userId()}, 
    {game: 1,_id: 0} 
); 
+0

'findOne' может возвращать' undefined', если совпадений нет, поэтому вам понадобится условие. Нет смысла смешивать белые списки и черные списки полей, и поле '_id' всегда будет возвращено. Вам понадобится условное выражение, чтобы получить нужное значение поля, если вы хотите поддерживать «неопределенный» случай. – MasterAM

ответ

0

Возвращаемое значение является объектом, если вы добавляете поле, которое требуется в точечной нотации (.name) на свой результат запроса, вы в конечном итоге со значением строки, хранящейся в поле.

var game = SearchLobby.findOne(
    {profile: Meteor.userId()}, 
    {game: 1, _id: 0} 
).game; 

Игра должна возвращать строковое значение имени, хранящегося внутри.

+0

это возвращает и ошибка для меня, не знаю, почему ... – dmkanerer

+0

Какая ошибка возвращается? – irimawi

+0

Исключение в помощнике шаблона: TypeError: Невозможно прочитать свойство 'game' of undefined – dmkanerer

0
const profile = Meteor.userId(); 
{name: SearchLobby.findOne({profile}, {game: 1,_id: 0}).game} 

Это должно быть хорошо. Я не думаю, что есть другой способ, как получить название игры из документа.

+0

Я не совсем уверен, как вторая строка кода предназначена для использования, как я могу сделать это равным переменной? и поле имени действительно не актуально, что было только для примера – dmkanerer

Смежные вопросы