sequelize error: Unhandled rejection TypeError: expecting an array or an iterable object but got [object Null]

sequelize error: Unhandled rejection TypeError: expecting an array or an iterable object but got [object Null]

我正尝试在我的模型中使用 sequelize 中的 findOne,但我收到此错误 模型引用的table为空,如何处理?

Unhandled rejection TypeError: expecting an array or an iterable object but got [object Null]

这是我的代码:

app.get('/test/models', function(req, res) {

        var values = { 
            where: { user_id: 7 } 
        };

        MercadoLibre.findOne(values)
        .spread(function(err, meli) {

            console.log(err);

            if (typeof meli !== null) {
                console.log("undefined");
            } else {
                console.log(meli);    
            }

            res.redirect('/dashboard');
        });
    });

我该如何解决这个问题?

您的代码中存在一些错误

  • 您应该处理来自 MercadoLibre.findOne()Promise.reject() 结果。
  • 您应该使用 .then() 而不是 .spread()

    来获得 findOne() 的结果

    .then(function(resolve)).catch(function(reject))

    • 可以在单个thenable中处理resolve()reject(),但格式是:

      .then(function(resolve), function(reject))

  • 您错误地检查了 null(不需要 typeof),并且您的代码将始终 return 为真(即使 meliundefined,也将如此typeof)

    typeof meli !== null

app.get('/test/models', function(req, res) {
  var values = { 
    where: { user_id: 7 } 
  };

  MercadoLibre.findOne(values)
  .then(function(result) {
    // just check for false-y
    if (!result) {
      console.log('Nothing was returned!')
    }
    // redirect to the route you want
    res.redirect('/dashboard');
  })
  .catch(function(err) {
    // catch any errors
    console.log('Error, do some kind of redirect?!', err);
  });
});