使用 html 表格处理 mongo 参考文献
Working mongo references with html forms
我正在使用一个表单和两个数据库 collection,当提交表单时,来自输入元素的所有数据都存储在相应的 collection 中。这很容易设置输入名称属性,如 blogs[content]
,然后在使用 .create()
.
将数据发送到数据库的路由中使用 object
但是,当 collection 引用另一个时,我不知道如何做到这一点。
假设我有以下 collections:
var Blog = new mongoose.Schema({
content: String,
authors: [{
type: mongoose.Schema.Types.ObjectId,
ref: "Author"
}]
});
var Author = new mongoose.Schema({
name: String
});
我知道您可以直接从路由中将数据与 push()
函数相关联,但我想从表单本身进行关联。
如何从 form
向 Blog
内的 authors
引用发送数据?我尝试将输入的名称设置为 blogs[authors]
但这不起作用,猜测不是那么简单。
这可能吗?还是从路由推送是唯一的选择?
提前致谢!
编辑:我被要求提供路线代码,所以这里是
app.get("/form", function(req, res){
Author.find({}, function(err, authors) {
if(err)
console.log(err);
else
res.render("form.ejs", {authors: authors});
});
});
// form.ejs sends a POST request to /blogs
app.post("/blogs", function(req, res){
Blog.create(req.body.blogs, function(err, newBlog){
if(err)
console.log(err);
else
res.redirect("/form");
});
});
HTML 形式应该是这样的:
<form action="/blogs" method="POST">
<select name=" HERE GOES THE name ATTRIBUTE I DON'T KNOW HOW TO SET ">
<option value="0" selected>Authors</option>
<% authors.forEach(function(author){ %>
<option value="<%= author._id %>"><%= author.name %></option>
<% }) %>
</select>
</form>
好吧,最后我解决了。看起来试图将某些内容直接从 form
保存到集合的引用中是一个错误,我必须首先将它存储在一个单独的变量中,如下所示:
var variableName = req.body.inputName;
然后遍历它,将所有值从路由推送到集合的引用中,所以最后看起来从路由推送是唯一的选择。
我正在使用一个表单和两个数据库 collection,当提交表单时,来自输入元素的所有数据都存储在相应的 collection 中。这很容易设置输入名称属性,如 blogs[content]
,然后在使用 .create()
.
但是,当 collection 引用另一个时,我不知道如何做到这一点。
假设我有以下 collections:
var Blog = new mongoose.Schema({
content: String,
authors: [{
type: mongoose.Schema.Types.ObjectId,
ref: "Author"
}]
});
var Author = new mongoose.Schema({
name: String
});
我知道您可以直接从路由中将数据与 push()
函数相关联,但我想从表单本身进行关联。
如何从 form
向 Blog
内的 authors
引用发送数据?我尝试将输入的名称设置为 blogs[authors]
但这不起作用,猜测不是那么简单。
这可能吗?还是从路由推送是唯一的选择?
提前致谢!
编辑:我被要求提供路线代码,所以这里是
app.get("/form", function(req, res){
Author.find({}, function(err, authors) {
if(err)
console.log(err);
else
res.render("form.ejs", {authors: authors});
});
});
// form.ejs sends a POST request to /blogs
app.post("/blogs", function(req, res){
Blog.create(req.body.blogs, function(err, newBlog){
if(err)
console.log(err);
else
res.redirect("/form");
});
});
HTML 形式应该是这样的:
<form action="/blogs" method="POST">
<select name=" HERE GOES THE name ATTRIBUTE I DON'T KNOW HOW TO SET ">
<option value="0" selected>Authors</option>
<% authors.forEach(function(author){ %>
<option value="<%= author._id %>"><%= author.name %></option>
<% }) %>
</select>
</form>
好吧,最后我解决了。看起来试图将某些内容直接从 form
保存到集合的引用中是一个错误,我必须首先将它存储在一个单独的变量中,如下所示:
var variableName = req.body.inputName;
然后遍历它,将所有值从路由推送到集合的引用中,所以最后看起来从路由推送是唯一的选择。