使用html表单工作mongo引用

我正在处理一个表单和两个数据库集合,当提交表单时,所有来自input元素的数据都存储在相应的集合中。 这很容易设置input名称属性,如blogs[content] ,然后在使用.create()将数据发送到数据库的路由中使用该对象。

但是,当一个集合引用另一个时,我不知道该怎么做。

假设我有以下集合:

 var Blog = new mongoose.Schema({ content: String, authors: [{ type: mongoose.Schema.Types.ObjectId, ref: "Author" }] }); var Author = new mongoose.Schema({ name: String }); 

我知道你可以直接从路由关联数据和push()函数,但是我想从表单本身来完成。

我怎样才能发送数据给Blog里的authors参考从form ? 我尝试将input的名称设置为blogs[authors]但这不起作用,猜测并不那么简单。

这甚至有可能吗? 或者是从路线推动唯一的select?

提前致谢!

编辑:我被要求的路线代码,所以在这里

 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保存某些东西到集合的引用中,我不得不首先将它存储在一个单独的variables中,如下所示:

 var variableName = req.body.inputName; 

然后循环通过它将所有的值从路由中推入集合的引用,所以最后看起来像从路由推送是唯一的select。