gpt4 book ai didi

node.js - 是否可以只获取 sequelize 属性的值?

转载 作者:行者123 更新时间:2023-11-29 13:40:12 25 4
gpt4 key购买 nike

我想弄清楚如何在没有其他常量的情况下获取一个只有值的数组,而没有 sequelize ORM 中的属性键。

现在我在模型中有这个作为实例方法:

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 的内容吗?

最佳答案

您的查询未返回 [date: 1/10/2019] 它返回事件 ModelInstance 只有date 属性已填充,当您转换为字符串时,您会看到该值。它也应该是带有大括号的 { "date": "1/10/2019"} 因为它是一个对象,而不是一个数组。

Sequelize 将始终返回一个对象或一个对象数组,而不是一个值数组。您可以轻松地转换为访问属性或使用 Array.map() 的值。通过将 raw: true 传递给查询,它还会返回纯 JSON 而不是模型实例,如果您不需要使用任何实例函数,模型实例的性能会更高。

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() 并取回一个数组...

const events = await Event.findAll({
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 events.map((event) => event.date);

关于node.js - 是否可以只获取 sequelize 属性的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56706085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com