繁体   English   中英

从sequelize方法返回基于promise的回调?

[英]Return promise-based callback from sequelize-method?

我有一个看起来像这样的模型。

var sequelize = require('../database.js').sequelize,
    Sequelize = require('../database.js').Sequelize,

User = sequelize.define('user', {},{
    classMethods: {
        createRider: function(params) {
            var values = [],
                userAttributes = sequelize.models.userAttributes,
                user = User.build(),
                name = userAttributes.build({name: 'name', value: params.name}),
                fbprofile = userAttributes.build({name: 'fbprofile', value: params.fbprofile}),
                phone = userAttributes.build({name: 'phone', value: params.phone});

            user = user.save().then((user) => {
                sequelize.Promise.all([
                    fbprofile.save(),
                    name.save(),
                    phone.save()
                ])
                .then((attributes) => {
                    user.addUserAttributes(attributes);
                });
            });
            return user;
        }
    }
});



module.exports = User;

我这样称呼它,并希望输出一些用户数据:

app.get('/rider/create',
    (req, res) => {
        var User = sequelize.models.user,
        user = User.createRider(req.query);
        res.json(user);
    }
);

因为在回调承诺.then定义了用户,所以当我输出它时将不包含用户数据。 回调完成后,如何等待首先返回数据?

您的createRider方法返回一个Promise,而不是一个值,因此您不能像user = User.createRider(req.query);那样分配它user = User.createRider(req.query); ,但您必须等待诺言完成。

User.createRider(req.query).then(user => {
  res.json(user);
}

用户对象需要在createRider返回的承诺链的末尾返回。 由于您返回的最后一个表达式是user.addUserAttributes(attributes) ,因此我认为user.addUserAttributes(attributes)也是在最后返回用户的promise链。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM