2016-10-12 125 views
2

我使用Sequelize连接到Postgres数据库。我有这样的代码:使用Sequelize和ES6承诺?

return Promise.resolve() 
    .then(() => { 
     console.log('checkpoint #1'); 
     const temp = connectors.IM.create(args); 
     return temp; 
    }) 
    .then((x) => console.log(x)) 
    .then((args) =>{ 
     console.log(args); 
     args = Array.from(args); 
     console.log('checkpoint #2'); 
     const temp = connectors.IM.findAll({ where: args }).then((res) => res.map((item) => item.dataValues)) 
      return temp; 
     } 
    ) 
    .then(comment => { 
     return comment; 
    }) 
    .catch((err)=>{console.log(err);}); 

在第一个。然后在块检查站#1,新的记录被成功添加到Postgres数据库。在未来,然后阻止console.log(x),这被记录到控制台:

{ dataValues: 
{ id: 21, 
    fromID: '1', 
    toID: '2', 
    msgText: 'Test from GraphIQL', 
    updatedAt: Wed Oct 12 2016 09:52:05 GMT-0700 (PDT), 
    createdAt: Wed Oct 12 2016 09:52:05 GMT-0700 (PDT) }, 
_previousDataValues: 
{ fromID: '1', 
    toID: '2', 
    msgText: 'Test from GraphIQL', 
    id: 21, 
    createdAt: Wed Oct 12 2016 09:52:05 GMT-0700 (PDT), 
    updatedAt: Wed Oct 12 2016 09:52:05 GMT-0700 (PDT) }, 
_changed: 
{ fromID: false, 
    toID: false, 
    msgText: false, 
    id: false, 
    createdAt: false, 
    updatedAt: false }, 
'$modelOptions': 
{ timestamps: true, 
    instanceMethods: {}, 
    classMethods: {}, 
    validate: {}, 
    freezeTableName: false, 
    underscored: false, 
    underscoredAll: false, 
    paranoid: false, 
    rejectOnEmpty: false, 
    whereCollection: null, 
    schema: null, 
    schemaDelimiter: '', 
    defaultScope: {}, 
    scopes: [], 
    hooks: {}, 
    indexes: [], 
    name: { plural: 'IMs', singular: 'IM' }, 
    omitNul: false, 
    sequelize: 
    { options: [Object], 
    config: [Object], 
    dialect: [Object], 
    models: [Object], 
    modelManager: [Object], 
    connectionManager: [Object], 
    importCache: {}, 
    test: [Object], 
    queryInterface: [Object] }, 
    uniqueKeys: {}, 
    hasPrimaryKeys: true }, 
'$options': 
{ isNewRecord: true, 
    '$schema': null, 
    '$schemaDelimiter': '', 
    attributes: undefined, 
    include: undefined, 
    raw: undefined, 
    silent: undefined }, 
hasPrimaryKeys: true, 
__eagerlyLoadedAssociations: [], 
isNewRecord: false } 

.then((args) =>代码块在检查站#2,args进来为未定义。

如何获取args以包含来自检查点#1的结果数组?

回答

5
.then((x) => console.log(x)) 
.then((args) =>{ 

是喜欢做

.then((x) => { 
    console.log(x); 

    return undefined; 
}) 
.then((args) =>{ 

因为console.log回报undefined。这意味着undefined值将传递到下一个.then

最简单的办法将明确

.then((x) => { 
    console.log(x); 

    return x; 
}) 

或在较短的版本使用逗号操作

.then((x) => (console.log(x), x))