node.js - 使用 html 表单工作 mongo 引用

标签 node.js mongodb forms express mongoose-schema

我正在使用一个表单和两个数据库集合,当提交表单时,来自输入元素的所有数据都存储在相应的集合中。设置输入名称属性(如 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() 函数相关联,但我想从表单本身进行关联。

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

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

关于node.js - 使用 html 表单工作 mongo 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47227646/

相关文章:

javascript - 如何使用 nodejs 打开默认浏览器并导航到特定 URL

node.js - Windows 7 中的 npm install 命令 weinre 失败

javascript - Express Node.js - 理解路由

javascript - 循环响应的异步回调无序

python - 如何使用 FastAPI + uvicorn 在工作人员之间共享数据库连接?

javascript - 在预保存钩子(Hook)中获取 Mongoose 构造函数数据

javascript - PHP/js 联系表单未跨域发布表单数据

c# - 登录表单没有正确失去焦点

HTML - 表单,两个文本输入。必需的属性。如何,用户必须在两个字段中的任何一个中输入字符串才能提交?

node.js - Mongo/Mongoose 聚合 - $redact 和 $cond 问题