这是productsModel.js文件
'use strict';
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var productsSchema = new Schema({
name: {
type: String,
required: true
},
cost: {
type: Number
},
product_imagePaths: [{
type: String
}]
});
module.exports = mongoose.model('Products', productsSchema);
这是我的productsController.js的代码
var mongoose = require('mongoose'),
Products = mongoose.model('Products');
exports.uploadProducts = function(req,res) {
var new_product = new Products(req.body)
new_product.save(function(err,product){
if(err) {
res.send(err);
}
res.status = 200;
res.json({
"status":"success"
});
});
};
productsRoutes.js
'use strict';
module.exports = function (app) {
var productsController = require('../controllers/productsController');
app.route('/products')
.get(productsController.fetchAllProducts)
.post(productsController.uploadProducts);
};
在我的server.js中
// mongoose instance connection url connection
mongoose.Promise = global.Promise;
var db = mongoose.connect('mongodb://localhost/abcd', {
useMongoClient: true
});
// body parser middleware
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true }));
// route
var userRoutes = require('./api/routes/userRoutes');
var aboutUsRoutes = require('./api/routes/aboutusRoutes');
var productsRoutes = require('./api/routes/productsRoutes');
userRoutes(app);
aboutUsRoutes(app);
productsRoutes(app);
现在这在我使用x-www-form-urlencoded
时有效。但是因为我想通过Post
方法(productsController.js中的uploadProducts)上传文件,所以只能通过form-data
来完成。但是,它不适用于form-data
。我读到multer
可用于form-data
上传,但我对如何在以下方法中使用它毫无头绪。
在调用multer
函数之前,您想使用uploadProducts
作为中间件。
以下是productRoutes.js
的示例设置
'use strict';
const multer = require('multer')
const storage = multer.memoryStorage()
const upload = multer({
storage: storage,
limits: {
fileSize: 5000000,
files: 1
}
})
module.exports = function (app) {
var productsController = require('../controllers/productsController');
app.route('/products')
.get(productsController.fetchAllProducts)
.post(upload.single('img'), productsController.uploadProducts);
};
这将创建你的图像的Buffer
,你可以用productsController.js
在你的req.file.buffer
访问。
请注意,upload.single
是multer
的内置函数。阅读更多关于其他功能here。 img
也需要匹配输入字段的名称,即<input type="file" name="img">
这只是众多方法中的一种。希望能帮助到你!