在数据库中插入新记录之前,我需要执行一些检查,然后决定是否可以插入记录。
我想使用 beforeCreate 钩子(Hook)做这样的事情:

    Data.beforeCreate(function(object, options) {
        Data.scope('complexQuery').findAll().then(function (result) {
            if (result.length >= 1) {
// do not insert the record
            }
            else {
// go ahead and insert
            }
        });
    });

关于如何停止创建记录的任何想法?

这是正确的方法吗?

最佳答案

您可以抛出错误,也可以拒绝 promise :

    Data.beforeCreate(function(object, options) {
        Data.scope('complexQuery').findAll().then(function (result) {
            if (result.length >= 1) {
                 throw new Error('Already exists')
                 return sequelize.Promise.reject('Already exists')
            }
            else {
// go ahead and insert
            }
        });
    });

由于您实际上是在进行验证,因此它可能更适合作为验证功能:)
sequelize.define('model', attributes, {
    validate: {
        complexQuery: function () {
            // Do the validation here instead
        }
    }
});

验证同时针对创建和更新运行

关于node.js - nodejs sequelize beforeCreate 钩子(Hook)做一些验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31321117/

10-12 00:03