【发布时间】:2020-10-30 18:54:59
【问题描述】:
我基本上需要在 mongodb 模式上保存一个 formData,使用 nodejs + express作为后端,multer作为中间件,这个formData由一个字符串和一个blob组成
我需要捕获 blob 和字符串并以某种方式保存在数据库中,但现在我什至无法在后端捕获
我的 req.body 和我的 req.files 显示为未定义
提前致谢
在 Angular 上发布服务
addPost(message, blob): Observable<any> {
var fd = new FormData();
fd.append('id', message);
fd.append('invoiceFile', blob);
let httpHeaders = new HttpHeaders({
Accept: 'multipart/form-data'
});
let options = {
headers: httpHeaders
};
return this.http.post(`${addPost}`, fd, options);
}
我的节点 server.js
const express = require('express');
const mongoose = require('mongoose');
const cookieParser = require('cookie-parser');
// const morgan = require('morgan');
const app = express();
const cors = require('cors');
var fs = require('fs');
const dbConfig = require('./config/env');
app.options('*', cors());
app.use(cors({ credentials: true, origin: true }));
app.use((req, res, next) => {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Credentials', 'true');
res.header('Access-Control-Allow-Methods', 'GET', 'POST', 'DELETE', 'PUT');
res.header(
'Access-Control-Allow-Headers',
'Origin, X-Requested-With, Content-Type, Accept'
);
next();
});
app.use(express.json({ limit: '50mb' }));
app.use(express.urlencoded({ extended: true, limit: '50mb' }));
app.use(logger('dev'));
mongoose.Promise = global.Promise;
mongoose.connect(
dbConfig.url,
{ useNewUrlParser: true }
);
const auth = require('./routes/authRoutes');
const posts = require('./routes/postRoutes');
app.use(cookieParser());
app.use(auth);
app.use(posts);
app.listen(3000, () => {
console.log('Runnning on port 3000');
});
我的路线
router.post('/api/post/add-post', upload.any(), function(req, res) {
console.log(req.body); // appear as undefined
console.log(req.file); // appear as undefined
res.status(204).end();
});
【问题讨论】:
标签: node.js angular express multer