📜  在 sequelize 中保存实例的某些字段 - Javascript (1)

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

在 Sequelize 中保存实例的某些字段

在 Sequelize 中,我们可以通过指定哪些字段需要保存来避免保存全部数据。这对于大型数据表格或需要保存历史变更的数据表格特别有用。

指定保存的字段

在使用 createupdatebuild 等 Sequelize 方法创建或更新实例时,可以通过指定 attributes 选项来指定需要保存的字段。例如,如果我们只希望保存实例的名称和描述:

// 新建实例
await User.create({
  name: 'John Doe',
  description: 'A user account'
}, {
  attributes: ['name', 'description']
});

// 更新实例
await User.update({
  name: 'Jane Doe',
  description: 'An updated user account'
}, {
  where: { id: 1 },
  attributes: ['name', 'description']
});
保存某些字段时预先验证

如果我们只想在保存某些字段时预先验证数据,可以使用 validate 选项。例如,如果要在保存实例的名称和描述时验证这些字段是否为空:

await User.create({
  name: 'John Doe',
  description: 'A user account'
}, {
  attributes: ['name', 'description'],
  validate: {
    name: { notEmpty: true },
    description: { notEmpty: true }
  }
});
动态指定要保存的字段

如果我们需要动态指定要保存的字段,则可以使用实例的 save 方法并传递一个包含要保存的字段名称的数组作为参数。例如,如果我们想要根据用户输入保存用户的数据:

const userInput = {
  name: 'John Doe',
  email: 'john@example.com',
  description: 'A user account'
};

const user = await User.build(userInput);
const fieldsToSave = ['name', 'description'];

await user.save({
  fields: fieldsToSave
});
结论

通过只保存必要的字段,我们可以有效地减轻数据库的负荷,提高性能,并避免存储不必要的数据。同时,我们可以使用预先验证确保我们只保存有效的数据,从而提高应用程序的安全和稳定性。