📜  .toJSON() in sequelize - Javascript (1)

📅  最后修改于: 2023-12-03 14:38:47.054000             🧑  作者: Mango

Sequelize中的.toJSON()方法

简介

Sequelize是一个基于Promise的Node.js ORM(对象关系映射)工具,支持PostgreSQL,MySQL,SQLite和Microsoft SQL Server。它可以帮助我们更方便地处理数据库,同时可以使用JavaScript来定义模型并将其映射到数据库表。

.toJSON()是Sequelize中的一个方法,使得我们可以将Sequelize模型实例序列化为JSON对象。

用法

.toJSON()返回某个Sequelize模型实例对象的JSON表现形式,该JSON对象包括所有当前属性的值以及任何格式化和处理。

const user = await UserModel.findOne({
  where: { id: 1 },
});

console.log(user.toJSON());

该方法可以轻松地将Sequelize模型实例对象转换为JSON对象或字符串,方便我们在程序中的实际使用中进行数据操作。

代码示例

例如,在以下示例中,我们将创建一个User模型,其中包含一些属性:idnameageemail

const { DataTypes, Model } = require('sequelize');
const sequelize = new Sequelize('sqlite::memory:');

class User extends Model {}

User.init({
  id: {
    type: DataTypes.STRING,
    primaryKey: true,
  },
  name: DataTypes.STRING,
  age: DataTypes.INTEGER,
  email: DataTypes.STRING,
}, { sequelize, modelName: 'user' });

(async () => {
  await User.sync({ force: true });

  const user = await User.create({
    id: '1',
    name: 'John Doe',
    age: 30,
    email: 'johndoe@example.com',
  });

  console.log(user.toJSON());
})();

输出结果为:

{
  id: '1',
  name: 'John Doe',
  age: 30,
  email: 'johndoe@example.com',
  createdAt: '2021-09-23T10:56:48.158Z',
  updatedAt: '2021-09-23T10:56:48.158Z'
}
注意事项
  • toJSON()方法返回的JSON对象是不可变的,即使在原始模型实例中已经更改了某些属性值,也不会反映在JSON对象中。
  • 如果您不想在JSON对象上有一些属性,则可以通过模型定义中的toJSON()选项来排除它们:
class SomeModel extends Model {
  static init(sequelize, DataTypes) {
    return super.init({
      // ...
    }, {
      // ...
      toJSON: {
        exclude: ['password', 'refresh_token'],
      }
    });
  }
}
总结

toJSON()方法是Sequelize中的一个非常实用的方法之一,可以为我们的工作带来很大的便利。在实际应用中,我们可以结合前端框架(如React、Vue.js等)来实现更高效的数据操作和管理。