更新文档时出现错误:由于值未定义,转换为字符串失败

2023-12-11

我有一个简单的文档,其中包含名称(必需)和描述(可选)。在我的模型中,我使用有效 ID 更新文档,并传递值为未定义的描述,因为我想从文档中删除此属性。但是,我收到以下错误:消息=转换为字符串失败,路径“描述”处的值“未定义”,名称= CastError,类型=字符串,值=未定义,路径=描述。当用户不提供描述时,如何在更新时删除描述属性?是否可以?

Thanks

/*jslint indent: 2, node: true, nomen: true*/

'use strict';

var Schema = require('mongoose').Schema;
var mongoose = require('mongoose');

var mongooser = require('../../lib/mongooser');

// Schema

var schema = new Schema({
  name: {
    required: true,
    set: mongooser.trimSetter,
    trim: true,
    type: String,
    unique: true
  },
  description: {
    set: mongooser.trimSetter,
    trim: true,
    type: String
  }
});

// Export

module.exports = mongoose.model('Role', schema);

// 角色.js

var update = function (model, callback) {
    var test = { name: 'Users', description: undefined };

    RoleSchema.findByIdAndUpdate(model.id, test, function (error, role) {
      callback(error, role);
    });
};

如果有人不想使用本机驱动程序,请参阅此答案https://stackoverflow.com/a/54320056/5947136

这里的问题是使用type作为架构中的键。

var schema = new Schema({
 name: {
    required: true,
    set: mongooser.trimSetter,
    trim: true,
    type: String, // <-- This is causing the issue
    unique: true
  },
  description: {
    set: mongooser.trimSetter,
    trim: true,
    type: String // <-- This is causing the issue
  }
});

请参阅上面的答案以获取不需要本机驱动程序的解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更新文档时出现错误:由于值未定义,转换为字符串失败 的相关文章

随机推荐