Возникли проблемы при сохранении встроенного массива в модель Mongoose.
Пожалуйста, см. Редактирование внизу.
У меня есть форма для создания BlogPost в Express с использованием Mongoose дляхранить данные в монго.Я могу создавать и просматривать новые посты блога, однако я только что добавил встроенную ленту схемы документа в модель BlogPost и не могу получить массивы каналов для сохранения из формы в модель
код:
BlogPosts.js
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/my_database');
var Schema = mongoose.Schema
, ObjectId = Schema.ObjectId;
var Feeds = new Schema({
name : { type: String }
, key : { type: String }
});
var BlogPost = new Schema({
author : ObjectId
, title : { type: String, required: true, index: { unique: true } }
, date : { type: Date, required: true, default: Date.now }
, feeds : [Feeds]
});
mongoose.model('BlogPost', BlogPost);
web.js
...
app.get('/blogpost/new', function(req, res) {
res.render('blogposts/blogpost_new.jade', { locals: {
title: 'New BlogPost'
}
});
});
app.post('/blogpost/new', function(req, res){
var b = new BlogPost(req.body.b)
b.save(function() {
b.feeds.push();
res.redirect('/blogposts');
});
});
...
var BlogPost = mongoose.model('BlogPost', BlogPost);
Нефритовая форма
form( method="post")
div
div
span Title :
input(type="text", name="b[title]", id="editBlogPostTitle")
div
span Feeds :
ul
li
span name
textarea( name="f[name]", rows=20, id="editBlogPostBodyName")
li
span key
textarea( name="f[key]", rows=20, id="editBlogPostBodyKey")
div#editBlogPostSubmit
input(type="submit", value="Send")
Если я заполняю эту форму, модель публикует и сохраняет, но каналыданных там нет ("feeds" : [ ]
).
Как правильно передать данные каналов для сохранения в массив?
Редактировать
Поэтому мне удалось настроить форму для сохранения объекта Feed с name
и key
в BlogPost, выполнив следующие действия.Тем не менее, это все еще необходимо улучшить, чтобы обеспечить возможность сохранения нескольких каналов в момент создания одного BlogPost.С моим текущим решением я могу правильно сохранить только один канал.Мысли?
blogposts.js (просто измените Feeds на Feed
var Feed = new Schema({
...
web.js (только что переместил push)
app.post('/blogpost/new', function(req, res){
var b = new BlogPost(req.body.b)
b.feeds.push(req.body.feed);
b.save(function() {
res.redirect('/blogposts');
});
});
форма (просто измените имена каналов)
li
span name
textarea( name="feed[name]", rows=20, id="editBlogPostBodyKey")
li
span key
textarea( name="feed[key]", rows=20, id="editBlogPostBodyKey")
Это сохраняет должным образом, я просто не могу создать несколько каналов внутри поста блога во время сохранения.Любая помощь с благодарностью.спасибо.