Node.js Sequelize model Include返回一个数组,其中一个对象包含空值

Node.js Sequelize model Include返回一个数组,其中一个对象包含空值,node.js,sequelize.js,Node.js,Sequelize.js,我在使用include in.findOne方法获取用户订单时遇到问题。 SQL查询是正确的,返回了50行,但sequelize给了我一个数组,其中一个对象包含空值: orders: [ Order { dataValues: {}, _previousDataValues: {}, _changed: {}, _modelOptions: [Object], _options: [Object], _

我在使用include in.findOne方法获取用户订单时遇到问题。 SQL查询是正确的,返回了50行,但sequelize给了我一个数组,其中一个对象包含空值:

  orders:
   [ Order {
       dataValues: {},
       _previousDataValues: {},
       _changed: {},
       _modelOptions: [Object],
       _options: [Object],
       __eagerlyLoadedAssociations: [],
       isNewRecord: false } ]
以下是我的模型:

  • 用户:
  • 订单:
在我的API中,我想获取用户和他的订单。 因此,我在控制器中执行以下操作:

user.findOne({
      where: { steamid: req.params.steamId },
      include: [{
        model: order,
        as: 'orders',
        limit: 50
      }],
    })
对于include sequelize,执行以下查询:

SELECT `id`, ... FROM `Orders` AS `Order` WHERE `Order`.`steamid` IN ('123456') LIMIT 50;
当我执行它时,我成功地得到了50行,但当我控制台日志
user.dataValues
时,我得到:

{ id: 1,
  steamid: '123456',
  name: 'TEST',
  img: null,
  balance: 40575,
  orders:
   [ Order {
       dataValues: {},
       _previousDataValues: {},
       _changed: {},
       _modelOptions: [Object],
       _options: [Object],
       __eagerlyLoadedAssociations: [],
       isNewRecord: false } ] }
当我执行
user.getOrders()
时,它会成功地为我提供用户订单,但查询与包含查询略有不同:

SELECT `id`, ... FROM `Orders` AS `Order` WHERE `Order`.`steamid` = '123456';
所以我也不明白为什么这个查询使用“=”而来自include的查询使用“IN()

我认为您对orders数组中的SequalizeJSON对象感到困惑,您可以使用
raw:true
nest:true

尝试在下面运行查询

user.findOne({
  where: { steamid: req.params.steamId },
  include: [{
    model: order,
    as: 'orders',
    limit: 50
  }],
  raw:true, // <----- HERE
  nest:true // <----- HERE
})
user.findOne({
其中:{streamid:req.params.streamid},
包括:[{
型号:订单,
如:"命令",,
限额:50
}],
原始:真的,//
我认为您对orders数组中的SequalizeJSON对象感到困惑,您可以使用
raw:true
nest:true

尝试在下面运行查询

user.findOne({
  where: { steamid: req.params.steamId },
  include: [{
    model: order,
    as: 'orders',
    limit: 50
  }],
  raw:true, // <----- HERE
  nest:true // <----- HERE
})
user.findOne({
其中:{streamid:req.params.streamid},
包括:[{
型号:订单,
如:"命令",,
限额:50
}],
raw:是的//
//this will get json result from your already executed sequlize query, as you can see in your output 
user.dataValues;

//this will run the query to get al the order of user you found from the query output
user.getOrders();
user.findOne({
  where: { steamid: req.params.steamId },
  include: [{
    model: order,
    as: 'orders',
    limit: 50
  }],
  raw:true, // <----- HERE
  nest:true // <----- HERE
})