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