使用 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() 函数相关联,但我想从表单本身进行关联。

如何从 formBlog 内的 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; 

然后遍历它,将所有值从路由推送到集合的引用中,所以最后看起来从路由推送是唯一的选择。