我试图弄清楚如何在序列化ORM中仅获取没有属性键的值的数组,而没有其他常量来生成诸如attribute.value之类的东西。
现在我将其作为模型中的实例方法:
Event.getDate = function (id) {
return this.findOne({
where: {
[Op.or]: [
{ homeId: { [Op.eq]: id } },
{ awayId: { [Op.eq]: id } }
],
status: { [Op.eq]: 'FINISHED' }
},
order: [[sequelize.col('date'), 'DESC']],
attributes: ['date']
})
}
返回[date: 1/10/2019]
,
是否可以在查询中获得类似1/10/2019
的内容?
答案 0 :(得分:0)
您的查询未返回[date: 1/10/2019]
,而是返回事件Instance
的{{1}},仅填充了Model
属性,当您转换为字符串时,看到价值。它也应该是date
,并带有花括号,因为它是一个对象,而不是数组。
Sequelize将始终返回一个对象或对象数组,而不是值数组。您可以轻松地将其转换为仅访问属性或使用{ "date": "1/10/2019" }
的值。通过将Array.map()
传递给查询,它还将返回普通的JSON而不是模型实例,如果您不需要使用任何实例函数,该模型将具有更高的性能。
raw: true
或者如果您要使用const event = await Event.findOne({
where: {
[Op.or]: [
{ homeId: { [Op.eq]: id } },
{ awayId: { [Op.eq]: id } }
],
status: { [Op.eq]: 'FINISHED' }
},
order: [[sequelize.col('date'), 'DESC']],
attributes: ['date'],
raw: true,
});
return event.date;
并返回一个数组...
findAll()