📜  sequelize find 查询以 json 对象格式返回原始数据 - Javascript (1)

📅  最后修改于: 2023-12-03 15:20:05.967000             🧑  作者: Mango

Sequelize Find 查询以 JSON 对象格式返回原始数据

当使用 Sequelize 进行数据库操作时,通常可以使用 find 方法来查询数据。在默认情况下,find 方法会返回一个包含原始数据的数组。但是有时候需要以 JSON 对象格式返回原始数据。

使用 toJSON 方法

Sequelize 中的 Model 实例都具有 toJSON 方法,可以将实例转换为 JSON 格式。所以,在查询数据时,可以通过在查询结果上调用 toJSON 方法,以 JSON 对象格式返回原始数据。

const User = sequelize.define('user', {
  firstName: DataTypes.STRING,
  lastName: DataTypes.STRING,
  age: DataTypes.INTEGER
});

const users = await User.findAll();
const usersJson = users.map(user => user.toJSON());
console.log(usersJson);

这段代码中,findAll 方法返回包含 User 实例的数组,然后使用 map 方法和 toJSON 方法将其转换为 JSON 对象格式的数组。

使用 options.raw

Sequelize 中的 find 方法接受一个 options 参数。通过将 options 中的 raw 属性设置为 true,可以以 JSON 对象格式返回原始数据。这是因为 raw 属性告诉 Sequelize 你只想得到原始数据,而不是 Model 实例。

const users = await User.findAll({ raw: true });
console.log(users);

这段代码中,findAll 方法的 options 参数包含 raw: true,告诉 Sequelize 只需要原始数据。注意,这里的输出结果是包含 JSON 对象的数组,而不是包含 User 实例的数组。

总结

Sequelize 中的 find 方法可以返回原始数据,以便我们可以处理它们或将它们转换为 JSON 对象格式。我们可以通过使用 toJSON 方法或在 options 中设置 raw 属性来实现这一点。