当我使用有效的 AccountNo_Lender
运行它时,数据库更新正常。如果我如上所示传递 null,我希望看到单行错误 error has occurred
但我在块引用中得到下面显示的内容。这里可能会发生什么?
console.js
const contracts = require('./service');
let contractToUpdate = {
idContract: 102,
AccountNo_Lender: null
};
(async () => {
var results2 = await contracts.update(contractToUpdate);
console.log(results2);
})();
service.js require('dotenv/config');
const Sequelize = require('sequelize');
const sequelize = new Sequelize(process.env.DATABASE, process.env.USER, process.env.PASSWORD, {
host: process.env.HOST,
dialect: 'mysql',
operatorsAliases: false,
pool: {
max: 5,
min: 0,
acquire: 30000,
idle: 10000
}
}, {
define: {
timestamps: false,
freezeTableName: true
}
});
sequelize
.authenticate()
.then(() => {
console.log('Connection has been established successfully.');
})
.catch(err => {
console.error('Unable to connect to the database:', err);
});
/**
* Model for the contract entity.
*/
const Contract = sequelize.define('Contract', {
idContract: {
type: Sequelize.INTEGER,
primaryKey: true
},
AccountNo_Lender: {
type: Sequelize.STRING,
allowNull: false
}
});
exports.update = function (contract) {
return new Promise(function (resolve, reject) {
Contract.insertOrUpdate(contract)
.then(c => {
resolve(c);
}).catch(err => {
reject('error has occurred.');
});
});
};
拒绝 promise C:\code\mypgm>node console.js (node:23304) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): error has occurred. (node:23304) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code. Executing (default): SELECT 1+1 AS result Connection has been established successfully.
更新:
如果我像下面建议的那样在调用者周围放置一个 try/catch ,我会得到更好的东西,但不确定
error message
在 connection message
之前是如何发生的?C:\code\eca-contracts>node console.js
error has occurred.
Executing (default): SELECT 1+1 AS result
Connection has been established successfully.
最佳答案
您应该处理在 Promise
中被拒绝的错误。调用 Promise 方法时使用 try
catch
。
(async () => {
try {
var results2 = await contracts.update(contractToUpdate);
console.log(results2);
} catch (error) {
console.log(error);
}
})();
关于node.js - 这对于调用处理 Sequelize 的方法是否很典型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50980190/