将嵌入式数组保存到Mongoose模型时遇到困难。Mongoose - 用嵌入式文档保存模型的表格
请参阅底部的编辑。
我有一个表单在Express中使用Mongoose创建BlogPost来存储mongo中的数据。我可以创建和查看新的相关博客文章,但是我只是增加了一个嵌入文档架构送入博客帖子模型,我不能让进阵列从形式保存到模型
代码:
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" : [ ]
)。
我应该如何正确提交饲料数据以保存到数组?
编辑
所以我已成功地建立了一个形式与name
和key
节省饲料对象的博文中执行以下操作。但是,这仍然需要改进,以便在创建单个BlogPost时保存多个Feed。使用我目前的解决方案,我只能正确保存一个Feed。思考?
blogposts.js(只是改变饲料到订阅
var Feed = new Schema({
...
web.js(刚移动的推送)
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")
这正确的扑救,我只是不能在储蓄时的博文中创建多个饲料。任何帮助不胜感激。谢谢。
我不是100%的= f.name/= f.key,因为我刚刚从哈姆切换到玉,但我认为这是正确的 – Chance
我喜欢这里的情况。我目前正在得到:' - i ++'行上的参考错误,它说'b没有定义' – tuddy
我想我需要在app.get new中以可用的方式定义b? – tuddy