Я играю с Mongoose, и у меня проблемы с сохранением массива. Например, у меня есть поле ввода на странице для разделенных запятыми тегов. Я хватаю их из req.body.tags, удаляю пустое пространство и разделяю их запятыми, чтобы получить массив тегов. Теперь, как мне сохранить этот массив обратно в мою базу данных? Я предполагаю, что я неправильно определил эту часть схемы, но я не уверен, что правильно, если честно. Схема у меня до сих пор:Сохранение массива (из «тегов») в MongoDB с использованием Mongoose
var postSchema = mongoose.Schema({
title: String,
permalink: String,
content: String,
author: {
id: String,
name: String,
},
postDate: {
type: Date,
default: Date.now
},
});
Если бы я был, чтобы сохранить метки (от должности, например) было бы лучше, чтобы иметь массив с именем метки, а затем каждый тег имеет имя (и идентификатор?)? Если да, добавлю ли я что-то вроде этого (ниже) к схеме? Идея добавления тегов в сообщение заключается в том, что я могу отображать их (как ссылки) в сообщении и иметь возможность искать базу данных для всех сообщений с определенным тегом. Правильно ли это?
tags: [{
name: String,
id: String
}]
При размещении в нового маршрута после, я делаю следующее:
post = new Post(req.body);
tags = req.body.tags.replace(/\s/g,'').split(',');
// maybe post.tags = tags ?
post.save(function(err) {
if (!err) {
res.redirect('/posts');
} else {
...
}
});
Это успешно сохраняет все другие поля, представленные (название, автор, содержание и т.д.), но я «Не знаю, как я могу сохранить только что созданные теги вернуться к базе данных. Любой совет здесь был бы очень желанным, поскольку я новичок в этом и очень хочу продолжать учиться. Благодаря!
Спасибо за (принят) ответ, Нил. Я не знал, что вы можете внедрить другую схему. –
Он отлично работает, но мне пришлось использовать '.replace (/ \ s/g, '')'. – wag0325
Ждать вы не можете сделать ObjectID вместо всей схемы? http://mongoosejs.com/docs/populate.html –