如何在Node.js和MongoDB中将模式模型与文件上传相结合?

如何在Node.js和MongoDB中将模式模型与文件上传相结合?,node.js,mongodb,express,mongoose,express-handlebars,Node.js,Mongodb,Express,Mongoose,Express Handlebars,大家好,我正在构建一个web应用程序,将员工信息存储在本地数据库中。我已经编写了必要的代码,以便客户可以通过表单输入所需信息,如姓名、电子邮件、电话号码等,并将其保存到MongoDB。现在,我想添加一个文件上载功能,以便可以将文档与员工信息(如保险单、护照副本等)一起上载。我正在努力找到实现这一点的方法,因为许多方法在线分别显示CRUD和文件上载的实现。是否有经验丰富的人员能够建议实施方法?我是节点开发新手,不熟悉大量可用框架。到目前为止,我已完成以下设置: 使用的框架:Express、Mong

大家好,我正在构建一个web应用程序,将员工信息存储在本地数据库中。我已经编写了必要的代码,以便客户可以通过表单输入所需信息,如姓名、电子邮件、电话号码等,并将其保存到MongoDB。现在,我想添加一个文件上载功能,以便可以将文档与员工信息(如保险单、护照副本等)一起上载。我正在努力找到实现这一点的方法,因为许多方法在线分别显示CRUD和文件上载的实现。是否有经验丰富的人员能够建议实施方法?我是节点开发新手,不熟悉大量可用框架。到目前为止,我已完成以下设置:

使用的框架:Express、Mongoose、Express把手(视图引擎)、引导

员工。型号:

const mongoose = require('mongoose');
const mongoURI = 'mongodb://localhost:27017/testDB'
const conn = mongoose.createConnection(mongoURI, {useNewUrlParser: true});


Schema = mongoose.Schema;
var employeeSchema = new Schema({
    fullName: {
        type: String,
        required: true
    },
    email: {
        type: String
    },
    mobile: {
        type: String
    },
    city: {
        type: String
    }
    });

const Employee = conn.model('Employee', employeeSchema);
module.exports = Employee;
员工控制员:

const mongoose = require ('mongoose');
const express = require ('express');
var router = express.Router();
const Employee = require('../models/employee.model');

router.post('/', (req, res) => {
    insertRecord(req, res);
});

function insertRecord (req, res) {
var employee = new Employee();
employee.fullName = req.body.fullName;
employee.email = req.body.email;
employee.mobile = req.body.mobile;
employee.city = req.body.city;
employee.save((err, doc) =>{
    if (!err)
        res.redirect('employee/list');
    else {
        console.log('Error during record insertion: ' + err);
    }
});
}
<h3>{{viewTitle}}</h3>

<form action="/employee" method="POST" autocomplete="off">
    <div class="form-group">
        <label>Full Name</label>
        <input type="text" class="form-control" name="fullName" 
placeholder="Full Name">
    </div>
    <div class="form-group">
        <label>Email</label>
        <input type="text" class="form-control" name="email" 
placeholder="Email">
    </div>
    <div class="form-row">
        <div class="form-group col-md-6">
            <label>Mobile</label>
            <input type="text" class="form-control" name="mobile" 
placeholder="Mobile">
        </div>
        <div class="form-group col-md-6">
            <label>City</label>
            <input type="text" class="form-control" name="city" 
placeholder="City">
        </div>
    </div>
    <div class="form-group">
        <button type="submit" class="btn btn-info"><i class="fa fa- 
database"></i> Submit</button>
    </div>
</form>
车把视图:

const mongoose = require ('mongoose');
const express = require ('express');
var router = express.Router();
const Employee = require('../models/employee.model');

router.post('/', (req, res) => {
    insertRecord(req, res);
});

function insertRecord (req, res) {
var employee = new Employee();
employee.fullName = req.body.fullName;
employee.email = req.body.email;
employee.mobile = req.body.mobile;
employee.city = req.body.city;
employee.save((err, doc) =>{
    if (!err)
        res.redirect('employee/list');
    else {
        console.log('Error during record insertion: ' + err);
    }
});
}
<h3>{{viewTitle}}</h3>

<form action="/employee" method="POST" autocomplete="off">
    <div class="form-group">
        <label>Full Name</label>
        <input type="text" class="form-control" name="fullName" 
placeholder="Full Name">
    </div>
    <div class="form-group">
        <label>Email</label>
        <input type="text" class="form-control" name="email" 
placeholder="Email">
    </div>
    <div class="form-row">
        <div class="form-group col-md-6">
            <label>Mobile</label>
            <input type="text" class="form-control" name="mobile" 
placeholder="Mobile">
        </div>
        <div class="form-group col-md-6">
            <label>City</label>
            <input type="text" class="form-control" name="city" 
placeholder="City">
        </div>
    </div>
    <div class="form-group">
        <button type="submit" class="btn btn-info"><i class="fa fa- 
database"></i> Submit</button>
    </div>
</form>
{{viewttitle}
全名
电子邮件
可移动的
城市
提交

上传的文件与其他文件一样都是输入,它们只需要HTML端的特定
enctype=“multipart/form data”
属性,以及服务器上的正确处理

易于掌握的演示使用(基于他们自己的实际示例):


谢谢,多亏了你的建议,我才有了这个主意。我使用了multer gridfs存储,因为我需要这些文件才能进入MongoDB。太棒了!我看过GridFS,但我看到的只是将文件独立于其他字段存储在MongoDB中的方法。。。如果您找到了一种使用模式存储文件的方法(即不使用磁盘/内存存储),您介意共享一个链接/示例吗?不管怎样,幸好你解决了这个问题!