当前位置: 首页 > 知识库问答 >
问题:

更新文档时出错:未定义值的转换为字符串失败

何嘉运
2023-03-14

我有一个简单的文件名(需要),描述(可选)。在我的模型中,我用一个有效的id更新了一个文档,并用未定义的值传递了description,因为我想从文档中删除这个属性。但是,我得到了以下错误:message=Cast-to-string在路径“description”处的值“undefined”失败,name=CastError,type=string,value=undefined,path=description。当用户不提供描述时,如何在更新时删除描述属性?可能吗?

谢谢

/*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);

//Role.js

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

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

共有2个答案

段干博明
2023-03-14

如果有人不想下拉到本机驱动程序,请参考此答案https://stackoverflow.com/a/54320056/5947136

这里的问题是使用类型作为模式中的键。

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
  }
});

请参考以上答案,以获得不需要本机驱动程序的解决方案。

上官波鸿
2023-03-14

尝试下拉到本机驱动程序,如下所示:

var update = function (model, callback) {
   RoleSchema.update({_id: model.id}, {$unset: {description: 1 }}, callback);
   });
};
 类似资料:
  • 问题内容: 在SQL 9(2005)中创建了一个存储过程,此后已升级到SQL 10(2008)。从那时起,以下存储过程停止工作并引发上述错误: 传入的参数@vPortalUID包含:2A66057D-F4E5-4E2B-B2F1-38C51A96D385。我执行这样的存储过程: 它跌倒了。我也尝试过转换。仍然没有喜悦。也具有将{}括起来的价值。我如上所述以编程方式和手动方式删除了这些内容。 如果您

  • 嗨,伙计们,我有一个错误,当我试图发送数组字符串与猫鼬模式其工作正常的标签,而不是selectedFile... 猫鼬模式: controller.js 类型js 对于测试,我将dammy值设置为[“imgar”],并收到以下错误消息:“PostMessage验证失败:selectedFile:在路径“selectedFile”处为值“['imgar']”(键入数组)转换为字符串失败 我能做什么?

  • 问题内容: 我一直收到错误消息“从字符串转换为uniqueidentifier时转换失败”,终于到了尽头。我已将问题缩小到尽可能小的范围,同时使错误保持不变。如果要复制,请先从此处安装CSV拆分器: http://www.sqlservercentral.com/articles/Tally+Table/72993/ 这是测试代码。我使用的是SQL 2008R2,但位于与SQL 2005兼容的数据

  • 问题内容: 我已经摆弄了二十多分钟,而我的Google-foo让我失望了。 假设我有一个用Java创建的XML文档(org.w3c.dom.Document): 如何将文档对象转换为文本字符串? 问题答案:

  • 我正在尝试加密和解密存储在SQL中的密码。解码时,我收到一个错误。输入不是有效的Base-64字符串,因为它包含一个非Base-64字符、两个以上的填充字符或填充字符中的非法字符。位于System.Convert.FromBase64_Decode。 解密代码: 加密代码: 列的数据类型为

  • 问题内容: 我正在尝试传递JSON文件并将数据转换成字典。 到目前为止,这是我所做的: 我期望是一种类型,但是当我使用进行检查时,它实际上是作为一种类型出现的。 我想念什么?我需要将它作为字典,以便可以访问其中一个键。 问题答案: JSON是一个数组,其中包含单个对象,因此当您阅读JSON时,将获得一个列表,其中包含字典。您可以通过访问列表中的项目0来访问字典,如下所示: 现在,您可以按预期访问存