如何使用nodeJS + multer + sequelize存储pdf文件
How to store pdf file using nodeJS + multer + sequelize
我正在使用 multer 将文件保存到临时文件夹,我想知道如何使用 sequelize 将此 pdf 文件存储在 postgres 数据库中。
迁移:
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.createTable('testeUploads', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER
},
fileDocumento: {
type: Sequelize.BLOB
},
createdAt: {
allowNull: false,
type: Sequelize.DATE
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE
}
});
},
down: (queryInterface, Sequelize) => {
return queryInterface.dropTable('testeUploads');
}
};
我的模型:
module.exports = (sequelize, DataTypes) => {
const testeUpload = sequelize.define('testeUpload', {
fileDocumento: DataTypes.BLOB
}, {});
testeUpload.associate = function(models) {
// associations can be defined here
};
return testeUpload;
};
使用create方法时,fileDocument字段应该传什么?
您需要传递一个缓冲区对象。
如果您不需要将文件存储在该临时文件夹中,您可以只将文件存储在内存中,multer 将文件作为缓冲区提供给您。
文档:
Multer Memory Storage
Sequelize Data Types 参见 BLOB
const express = require('express');
const app = express();
const port = 3000;
const multer = require('multer');
const storage = multer.memoryStorage();
const upload = multer({ storage: storage });
app.post('/', upload.single('avatar'), function (req, res, next) {
console.log(req.file);
// req.file.buffer is what you want to pass to create
});
我正在使用 multer 将文件保存到临时文件夹,我想知道如何使用 sequelize 将此 pdf 文件存储在 postgres 数据库中。
迁移:
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.createTable('testeUploads', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER
},
fileDocumento: {
type: Sequelize.BLOB
},
createdAt: {
allowNull: false,
type: Sequelize.DATE
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE
}
});
},
down: (queryInterface, Sequelize) => {
return queryInterface.dropTable('testeUploads');
}
};
我的模型:
module.exports = (sequelize, DataTypes) => {
const testeUpload = sequelize.define('testeUpload', {
fileDocumento: DataTypes.BLOB
}, {});
testeUpload.associate = function(models) {
// associations can be defined here
};
return testeUpload;
};
使用create方法时,fileDocument字段应该传什么?
您需要传递一个缓冲区对象。 如果您不需要将文件存储在该临时文件夹中,您可以只将文件存储在内存中,multer 将文件作为缓冲区提供给您。
文档:
Multer Memory Storage
Sequelize Data Types 参见 BLOB
const express = require('express');
const app = express();
const port = 3000;
const multer = require('multer');
const storage = multer.memoryStorage();
const upload = multer({ storage: storage });
app.post('/', upload.single('avatar'), function (req, res, next) {
console.log(req.file);
// req.file.buffer is what you want to pass to create
});