我知道這是一個普遍的問題,但我的 app.js 中有以下代碼
app.post('/data', (req, res) =>{
const file = req.files.filename;
const nose = [];
const filename = file.name;
file.mv('./excel/' filename, (err)=>{
if(err){
console.log(err)
} else{
const result = importExcel({
sourceFile: './excel/' filename,
header: {rows:1},
columnToKey :{A:'Dimension', B:'Category', C:'Subcategory',D:'Factor', E:'Context', F:'Date',G:'Indicator', H:'Formula',I:'FoundValue'},
sheets:['data']
})
for(var i=0; result.data.length > i; i ){
nose.push(result.data[i].Dimension,
result.data[i].Category)
}
res.send(nose)
console.log(nose ' = Total data ' nose.length);
}
})
})
這是用于發送資料的按鈕部分中的 data.ejs
<form action="/data" method="post" enctype="multipart/form-data">
<div style="float:right">
<input style="margin-top:6%;" class="btn btn-light" type="file" name="filename">
<button style="float:right" type="submit" class="btn btn-success mt-4"><i class="fa-solid fa-file-import"></i></button>
</div>
<div class="footer" style="margin-left: 0px; margin-right: 0px!important;">
現在它在視覺上看起來像這樣;
我的資料是這樣顯示的;

這很好,因為這就是我的 excel 的樣子;

背景關系:我需要使用 Nodejs 將 app.js 中的 .json 資料發送到我的 MySQL 資料庫,但我不知道如何將這些資料發送到我的資料庫表,我已經看到他們使用 multer、sequelize 等。我不知道是不是這樣,或者對于像我這樣的新手來說有更容易理解的方法。
我也有一個應用程式。得到,像這樣;
app.get('/data', (req, res) =>{
connection.query('SELECT c.data_id, d.dimension_name, cc.category_name, s.subcategory_name, f.factor_name,f.factor_description,c.date_creation_data, c.Indicator,ff.formula_name FROM data_load c INNER JOIN dimensions d ON c.dimension_id = d. id_dimensions INNER JOIN categories cc ON c.id_categories = cc.id_categories INNER JOIN subcategory s ON c.id_subcategories = s.id_subcategories INNER JOIN factors f ON c.id_factor = f.id_factor INNER JOIN formulas ff ON c.id_formula = ff.id_formula;',
function(error, results){
if(error){
console.log(error)
} else{
res.render('./data', {
results:results
})
}
})
})
正如您在 app.get 中注意到的,我的表也有幾個 INNER JOIN,所以這是我目前的表;

CREATE TABLE `carga_datos` (
`id_datos` int(11) NOT NULL,
`id_dimensiones` int(11) DEFAULT NULL,
`id_categorias` int(11) DEFAULT NULL,
`id_subcategorias` int(11) DEFAULT NULL,
`id_factor` int(11) DEFAULT NULL,
`fecha_creacion_data` timestamp NOT NULL DEFAULT current_timestamp(),
`Indicador` int(11) NOT NULL,
`id_formula` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
ALTER TABLE `carga_datos`
ADD PRIMARY KEY (`id_datos`),
ADD KEY `id_dimensiones` (`id_dimensiones`),
ADD KEY `id_categorias` (`id_categorias`),
ADD KEY `id_subcategorias` (`id_subcategorias`),
ADD KEY `id_factor` (`id_factor`),
ADD KEY `id_formula` (`id_formula`);
ALTER TABLE `carga_datos`
MODIFY `id_datos` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
ALTER TABLE `carga_datos`
ADD CONSTRAINT `carga_datos_ibfk_1` FOREIGN KEY (`id_dimensiones`) REFERENCES `dimensiones` (`id_dimensiones`),
ADD CONSTRAINT `carga_datos_ibfk_2` FOREIGN KEY (`id_categorias`) REFERENCES `categorias` (`id_categorias`),
ADD CONSTRAINT `carga_datos_ibfk_3` FOREIGN KEY (`id_subcategorias`) REFERENCES `subcategoria` (`id_subcategorias`),
ADD CONSTRAINT `carga_datos_ibfk_4` FOREIGN KEY (`id_factor`) REFERENCES `factores` (`id_factor`),
ADD CONSTRAINT `carga_datos_ibfk_5` FOREIGN KEY (`id_formula`) REFERENCES `formulas` (`id_formula`);
COMMIT;
請幫忙,我不知道該怎么辦,
提前致謝 :(
uj5u.com熱心網友回復:
我建議對您的資料模型使用 sequelize。這個例子應該讓你上路。
您通過遷移創建和更新表,然后通過控制臺運行它們:
'use strict';
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.createTable('carga_datos', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER
},
id_datos: {
allowNull: false,
type: Sequelize.INTEGER
},
id_dimensiones: {
allowNull: true,
type: Sequelize.INTEGER
},
id_categorias: {
allowNull: true,
type: Sequelize.INTEGER
},
id_subcategorias: {
allowNull: true,
type: Sequelize.INTEGER
},
createdAt: {
allowNull: false,
type: Sequelize.DATE
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE
}
})
},
down: (queryInterface, Sequelize) => {
return queryInterface.dropTable('carga_datos');
}
};
您將像這樣定義模型模式:
'use strict';
module.exports = (sequelize, DataTypes) => {
var carga_datos = sequelize.define('carga_datos', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: DataTypes.INTEGER
},
id_datos: {
allowNull: false,
type: DataTypes.INTEGER
},
id_dimensiones: {
allowNull: true,
type: DataTypes.INTEGER
},
id_categorias: {
allowNull: true,
type: DataTypes.INTEGER
},
id_subcategorias: {
allowNull: true,
type: DataTypes.INTEGER
},
createdAt: {
allowNull: false,
type: DataTypes.DATE
},
updatedAt: {
allowNull: false,
type: DataTypes.DATE
}
})
carga_datos.associate = function (models) {
}
return carga_datos;
}
當您想在資料庫中創建新條目時,您將使用:
const datos = await carga_datos.create({
id_datos: req.body.id_datos,
id_dimensiones: req.body.id_dimensiones
})
在撰寫模型和遷移時注意型別,它們可能會混淆。祝你好運!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/530462.html
上一篇:從谷歌驅動器下載Sqlite備份檔案最終會出現損壞的檔案nodejs Vue
下一篇:域前置技術和C2隱藏
