是否只能获取sequelize属性的值?

时间:2019-06-21 15:11:31

标签: node.js postgresql sequelize.js

我试图弄清楚如何在序列化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的内容?

1 个答案:

答案 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()