错误:虚拟路径“密码”与架构中的真实路径冲突

时间:2018-06-29 06:43:16

标签: node.js mongodb mongoose

当我尝试在架构中添加Virtuals时,出现以下错误,无法解决...请帮助解决该问题,并让我知道这是为什么

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var recipientSchema = new mongoose.Schema({
  email: { type: String, trim: true, required:  true },
  password: { type: String, required: true },
});


/**
 * Virtuals
 */
recipientSchema
  .virtual('password')
  .set(function(password) {
    this._password = password;
    this.salt = this.makeSalt();
    this.hashedPassword = this.encryptPassword(password);
  })
  .get(function() {
    return this._password;
  });

module.exports = mongoose.model('Recipients', recipientSchema);

2 个答案:

答案 0 :(得分:1)

如果您使用虚拟的“密码” ,则无需在架构中声明真实的密码。另外,您还没有声明 hashedPassword

您的架构必须是这样

var recipientSchema = new mongoose.Schema({
  email: { type: String, trim: true, required:  true },
  hashedPassword: { type: String, required: true },
  salt: { type: String, required: true }
});

答案 1 :(得分:0)

看看这个模式:

enter image description here

在这里,我们已经创建了虚拟的密码字段,即,当我们发布数据时,我们将使用密码字段,但是它将作为hash_password存储在数据库中(密码字段不会在数据库中显示,因为我们将其设置为虚拟的),我们不需要在架构中单独创建密码字段。

查看帖子数据的表单(帖子数据):

enter image description here

数据库中的字段将像这样存储:

enter image description here

希望这会清除您的疑问。