返回父子函数中的变量的子子函数?

时间:2018-10-03 10:03:27

标签: javascript node.js promise sequelize.js es6-promise

我对Promise功能有疑问。我使用 NodeJS + sequelizeJS

我有一个Child Promise函数来获取表User Data中的auth_user

function sequelize_user (id_in) {
  var promises = []
  var querydb = `SELECT * FROM auth_user WHERE id IN (${id_in})`;
  promises.push(
    db.sequelize.query(querydb, { type: db.sequelize.QueryTypes.SELECT})
    .then(res => {
      return res
    })
  )
  return Promise.all(promises);
}

我有一个家长承诺功能来进行对话,该对话有参与者作为用户。

function sequelize_conversation (conversation_id, req) {
  var promises = [];
  for (let id of conversation_id) {
    promises.push(
      db.ConversationPerson.findAll({ where: {'conversation_id': id, 'user_id': { [Op.ne]: req.user.user_id }} })
      .then(participants => {
        if (cvs_person.length) {
          return {
            'conversation_id': id,
            'with_user': (function() {
             sequelize_user(cvs_person.user_id)
              .then(user => {
                console.log(user) // -> { id: 1, username: 'feedgit' }
                return user // -> {} ?????????
              })
            })()
          }
        } else {
          return { 'conversation_id': id }
        }
      })
    );
  }
  return Promise.all(promises);
}

在此代码中:

'with_user': (function() { sequelize_user([participants[0].user_id]) .then(user => { console.log(user); return user }) })()

我想使用子项Promise函数User来获得sequelize_user,但是它返回{}。这不是真的。

我的代码有什么问题?我认为是因为错误的Promise函数调用。

1 个答案:

答案 0 :(得分:1)

您似乎正在寻找

db.ConversationPerson.findAll({
  where: {'conversation_id': id, 'user_id': { [Op.ne]: req.user.user_id }} 
}).then(participants => {
  if (cvs_person.length) {
    return sequelize_user(cvs_person.user_id).then(user => {
//  ^^^^^^                                   ^^^^^
      console.log(user) // -> { id: 1, username: 'feedgit' }
      return {
//    ^^^^^^^^
        conversation_id: id,
        with_user: user,
//                 ^^^^
      };
    });
  } else {
    return { 'conversation_id': id }
  }
})