node.js - 这对于调用处理 Sequelize 的方法是否很典型?

标签 node.js sequelize.js

当我使用有效的 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 messageconnection 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/

相关文章:

javascript - 页面未返回结果

node.js - Sequelize : How to match atleast 1 value from array stored in db with array in the request

javascript - 使用 Passport 和 MySQL 存储密码的安全性

javascript - 使用缓冲区复制 fs.createReadStream

node.js - rethinkdb orderby 不区分大小写

mysql - 在 Apollo GraphQL 中,如何设置解析器不循环值?

node.js - 在 pm2 monit 中显示完整日志字符串

javascript - Sequelize 身份验证无法完成

node.js heroku Ghost 由于缺少依赖项而无法启动 : Cannot find module

javascript - 发送多部分发布请求时出现问题