Javascript 为什么续约中还承诺

Javascript 为什么续约中还承诺,javascript,object,promise,sequelize.js,sequelize-cli,Javascript,Object,Promise,Sequelize.js,Sequelize Cli,我是新来的续集。因此,我正在编写一个查询,在其中映射参数并在数据库中找到它们。但我得到的只是一个承诺。 这是我的密码 findData(params) { return params.map(product => { return Model.Stock.findAll({ raw: true }) .then(stocks => stocks.map(stock => ({ success: true, data: stock })))

我是新来的续集。因此,我正在编写一个查询,在其中映射参数并在数据库中找到它们。但我得到的只是一个承诺。 这是我的密码

findData(params) {
   return params.map(product => {
      return Model.Stock.findAll({ raw: true })
        .then(stocks => stocks.map(stock => ({ success: true, data: stock })))
        .catch(err => ({ success: true, error: err.toString() }));
    });
  },
我希望得到物体,我该怎么做

0:Promise
_bitField:33554432
_fulfillmentHandler0:undefined
_promise0:undefined
_receiver0:undefined
_rejectionHandler0:Array(4)
_trace:CapturedTrace
__proto__:Object
length:1
__proto__:Array(0)

为了返回对象,我应该更改什么?

我建议阅读一些关于承诺的内容,以及如何有效地使用它们。你可以在附近找到许多例子

在您的特定情况下,查看代码,您确实收到了一个对象。 看看:

.then(stocks => stocks.map(stock => ({ success: true, data: stock })))
让我们更进一步:

stocks => stocks.map
股票应该(以名称结尾)有一个对象数组

在您的情况下,您可以按如下方式使用它:

findData(params).then(function(yourObjects) {

    //do something here...
});
解释(为什么它会回归承诺):

findData(params) {
   return params.map(product => { // <-------- 2. So this will return array of promise objects
      return Model.Stock.findAll({ raw: true }) //<------- 1. This will always returning promise , nature of sequlize
        .then(stocks => stocks.map(stock => ({ success: true, data: stock })))
        .catch(err => ({ success: true, error: err.toString() }));
    });
},
findData(params).then(your_data => { ..... })
然后您可以获得如下数据:

findData(params) {
   return params.map(product => { // <-------- 2. So this will return array of promise objects
      return Model.Stock.findAll({ raw: true }) //<------- 1. This will always returning promise , nature of sequlize
        .then(stocks => stocks.map(stock => ({ success: true, data: stock })))
        .catch(err => ({ success: true, error: err.toString() }));
    });
},
findData(params).then(your_data => { ..... })