小编Dan*_*ial的帖子

使用Promises - Node执行多个Sequelize JS模型查询方法

我在使用sequelize js从数据库中检索数据时遇到问题.我是NODEJS的新手.我不知道Promise和Promise.all是否内置函数所以我安装并在我的代码中也需要npm promise.以下是我的代码.

var Promise = require('promise');

var user_profile = new Promise(function(resolve, reject) {
    db.user_profile.findOne({
        where: {
            profile_id: new_profile_id
        }
    }).then(user => {
        console.log('Summary Result User found.');
        resolve(user);
    });
});

var all_reports = new Promise(function(resolve, reject) {
    db.report.all().then(reports => {
        console.log('Summary Result Reports found.');
        resolve(reports);
    });
});

var report_details = new Promise(function(resolve, reject) {
    db.report_detail.findAll({
        where: {
            profile_id: new_profile_id
        }
    }).then(report_details => {
        console.log('Summary Result Report Details found');
        resolve(report_details);
    });
});

var all_promises = Promise.all([user_profile, all_reports, report_details]).then(function(data) {
    console.log('**********COMPLETE RESULT****************'); …
Run Code Online (Sandbox Code Playgroud)

node.js express sequelize.js mean-stack sequelize-cli

5
推荐指数
1
解决办法
4940
查看次数

Destory 和bulkCreate 上的Sequelize js 事务不回滚

我试图在批量创建/插入新报告之前删除所有报告详细信息。问题是当bulkCreate出现错误时它不会回滚。它应该带回被破坏的report_details,但它不起作用。

我测试此事务代码的方式是插入report_details,然后手动更改一个名称,以便再次插入时会出现列错误。并且事务应该回滚,但实际上report_details被破坏,并且在bulkCreate错误时它不会带回被破坏的report_details,有人可以看一下我的代码。我在谷歌上搜索我的语法是正确的。以及如何在我的机器上测试交易?除了更改列名之外还有其他方法会产生错误吗?

function saveReportsDetails(results) {
db.report_detail.bulkCreate(results.report.objAllReportsDetail);

    return db.snpreq.transaction(t => {
        // transaction block
        return db.report_detail.destroy({
            where: {
                profile_id: results.profile.data[0].id
            }
        }, {
            transaction: t
        }).then(deleted => {
            console.log('*******TRANSACTION DELETED*********');

            return db.twenreport_detail.bulkCreate(results.report.objAllReportsDetail, {
                transaction: t
            }).then(reports_created => {
                console.log('*******TRANSACTION bulk created*********');
            });
        });
    }).then(transaction => {
        console.log('********All Transaction********');
    }).catch(err => {
        console.log('*******ROLL BACK*********');
    });
}
Run Code Online (Sandbox Code Playgroud)

postgresql transactions sequelize.js mean-stack sequelize-cli

5
推荐指数
1
解决办法
7499
查看次数