序列化-需要一个属性,没有相应的表列

时间:2019-06-12 11:06:26

标签: node.js sequelize.js

假设我有一个User模型,并将基于该模型创建一个名为users的表。

我将其字段定义如下。

User.init({
   username: {....}, 
   password: {....}
}, {sequelize, modelName: 'user'});

让我们假设我要求用户确认密码(一种非常普遍的做法),并且想要验证这两个字段(passwordcpassword)是否相同,并且我想这样做作为使用模型范围验证的模型验证的一部分,所以我的模型将变成这样。

User.init({
   username: {....}, 
   password: {....}, 
   cpassword: {...},
   validate: {
     checkIfEqual() {
      if (cpassword !=== password) throw new Error("not same")
     }
   }
}, {sequelize, modelName: 'user'});

显然,我不想在users表中使用列cpassword。

我可以在调用User.Create之前手动进行检查,但是我希望将其作为整体用户模型验证的一部分。

有什么解决方法吗?

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找的是VIRTUAL属性。它们没有存储在表中,但是您可以在models中使用它们。

我在Sequelize documentation上找到了很好的例子。请检查一下。