2016-04-30 16 views
0

Ниже приведен пример схемы:Доступ мангуст массив схемы с телесным анализатором

var schema = mongoose.Schema; 

var userSchema = new schema ({ 
username: {type: String}, 
hobby: [{ 
    indoor: { 
     type: {type: String}, 
     description: {type: String} 
    }, 
    outdoor: { 
     type: {type: String}, 
     description: {type: String} 
    } 

}] 
}); 

module.exports = mongoose.model('User', userSchema); 

Таким образом, очень простая схема. Он запрашивает имя пользователя, а затем запрашивает у пользователя список своих хобби и делится между внутренними и внешними хобби и внутри массива.

Использование тела парсер, я мог бы получить на имя пользователя в форме ввода, как это:

var user = new User(); 
user.username = req.body.username; 

Это достаточно просто. Но как мне добраться до хобби внутри массива? Я пробовал:

user.hobby.indoor.type = req.body.type 

Но это не сработает; это просто дает мне ошибку. Любая помощь будет оценена по достоинству.

ответ

0

Так что я в конечном итоге найти ответ на мою проблему. Вот пример того, что делать:

var user = new User(); 
user.username = req.body.username; 
user.hobby = {{ 
    indoor: { 
     type: req.body.type, 
     description: req.body.description 
    } 
}]; 

И вот как вы можете добраться до свойства внутри массива.

1

Следующий код поможет вам правильно получить доступ к вашему ключу. Поскольку хобби - это массив, вам нужно предоставить индекс для извлечения его объектов. Dot нотации работы с объектами

user.hobby[0].indoor.type

Js Fiddle: https://jsfiddle.net/x18nyd2e/

+0

Добавление [0] просто не работает ... У меня все еще возникают ошибки. Вы упомянули, что мне «нужно предоставить индекс для извлечения его объектов»; Я не совсем понимаю, что вы имеете в виду. – MonkeyOnARock

+0

Вы не можете получить доступ к объектам массива без указания индекса массива. Чтобы получить доступ к внутреннему объекту, вам необходимо указать 0-й индекс, в который помещается закрытый объект. Я обновляю ссылку, где вы можете найти решение. – amanpurohit

+0

Итак, я играл с вашим jsfiddle и отлично работал. Но я все равно не могу заставить его применить мои поля формы. Вот jsfiddle, который показывает мое поле формы, мою схему и мой router.post: https://jsfiddle.net/4qq3hzr9/3/ ... Он будет извлекать имя пользователя просто отлично, но он не будет извлекать «тип» из поле формы. – MonkeyOnARock

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