首页 > 解决方案 > SequelizeJS 用承诺返回“fulfillmentValue”

问题描述

我想使用 SequelizeJS 和findAll函数创建一个项目数组,但我遇到了一个问题。

查询有效,但我得到了一个具有一些意外属性的特殊对象(fulFillmentValue、isFulfilled、isRejected、...)。

在此处输入图像描述

我的代码:

associatedItems.includingItems = _.map(includeModels, function(includingModel) {
  return includingModel.model.findAll().then( function(items) {
    return {
      items: items,
      reference: includingModel.reference,
      modelName: includingModel.reference.replace(/_/g, '-')
    };
  })
});

标签: javascriptnode.jspromisesequelize.js

解决方案


下面的函数返回值的 Promise,而不是您想要的实际值。

function(includingModel) {
  return includingModel.model.findAll().then( function(items) {
    return {
      items: items,
      reference: includingModel.reference,
      modelName: includingModel.reference.replace(/_/g, '-')
    };
  })
}

因此,您必须通过以下方式从 Promise 中获取值。

promises = _.map(includeModels, function(includingModel) {
  return includingModel.model.findAll().then( function(items) {
    return {
      items: items,
      reference: includingModel.reference,
      modelName: includingModel.reference.replace(/_/g, '-')
    };
  })
});

Promise.all(promises)
  .then(results => {
    associatedItems.includingItems = results;
  });

推荐阅读