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

MongoDB(mongoose):转换为[string]的值失败

虞祯
2023-03-14

当我尝试更新DB中的文档时,发生了一些错误。

以下是模式:

const prodSchema = new Schema({
  name: {
    type: String,
    required: true,
    unique: true
  },
  description: {
    type: [String]
  },
})

然后我从其他地方得到一些产品:

const some_product = axios.get(blah blah)

并更新Mu文档。请注意,我为“描述”设置了一个条件:如果它有空值,它将被更新——否则它将保持不变:

const newProduct = {
$set: {
    name: some_product.name,
    description: {
            $cond: {
              if: {
                $eq: [null, '$description']
              },
              then: [some_product.description],
              else: '$description'
            }
    }
}

}

Go update(我使用mongoose):产品。updateOne({name:some_product.name},newProduct,{some params})

我看到:

对于路径“description”处的值“[{“$cond”:{“if”:{“$eq”:[null,$description”]}”,转换为[string]失败,然后“[“这里是产品的一些新描述”],“else”:“$description”}]”

我认为关键是模式中的描述类型是字符串数组,而请求的“some_product”中的“description”字段只是一个字符串。也许这就是问题所在。

但我该怎么解决呢?非常感谢。

共有1个答案

有凯泽
2023-03-14
var description = []
description.push(some_product.description)
const newProduct = [{
$set: {
    name: some_product.name,
    description: {
            $cond: {
              if: {
                $eq: [null, '$description']
              },
              then: description,
              else: '$description'
            }
    }
}
}]

将更新操作放在[]中,例如使用更新管道模型。更新({},[{$set:…}])

 类似资料:
  • 我试图在现有游戏中插入一轮,这会导致以下错误: 游戏验证失败:回合。1.问题:路径“问题”处的值“[5ac5cfb41fca8a22f519cb22]”的转换到数组失败 架构的: 插入函数: 游戏的参数是: 参数轮是: 安慰日志(轮问)结果: 猫鼬:5.0。12, 我不知道我在这里做错了什么。我会很感激你的帮助。

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

  • 本文向大家介绍MongoDB查询以从ObjectId转换为String,包括了MongoDB查询以从ObjectId转换为String的使用技巧和注意事项,需要的朋友参考一下 在MongoDB中使用toString()将ObjectId转换为字符串。让我们创建一个包含文档的集合 在find方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是将ObjectId转换为String的查询- 现

  • 尽管这个问题已经被问了很多次,但通常是因为实体没有该字段的有效ObjectId。 我遇到过这样一种情况,即ObjectId被设置为一个可以转换为ObjectId的值,但仍然会出现这个错误。 模式: 伪代码: 此代码的输出为: 但是但是。。。{serviceName:000000000000000001,_id:55079a90286f49280364f78b}{[CastError:在路径“ser

  • 问题内容: 我是否可以使用Java 将转换为中的等效值。 我当然可以用一个大的声明来做到这一点,但是如果可能的话,我想避免这样做。 鉴于此文档: http://download.oracle.com/javase/1.4.2/docs/api/java/util/Enumeration.html 我不太希望没有ifs或case语句就可以做到这一点。 问题答案: 希望您认识到,它不同于Java 1.

  • 问题内容: 我正在开发一些应用程序,它允许从SD卡中选择图像,将其保存到数据库中并为ImageView设置此值。我需要知道将uri转换为字符串并将字符串转换为uri的方法。现在,我使用了Uri的getEncodedPath()方法,但是例如,此代码不起作用: 因此,我不知道如何将Uri保存到数据库中并根据保存的值创建新的Uri。请帮我修复它。 问题答案: 我需要知道将uri转换为字符串并将字符串转