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