You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mongoose+Express更新数据库报错:Cast to string failed for value 解决方法

问题:Mongoose+Express更新数据时出现“Cast to string failed for value”错误

错误原因

  • 查询条件类型不匹配:你的查询语句{ key: { key: keyPassed } }把key字段设成了嵌套对象,但Mongoose模型里key是String类型,Mongoose试图将这个对象转为字符串时失败,抛出类型转换错误。
  • 更新字段名不匹配:模型里存储地址的字段是wallet_address,但你代码里用address来更新,不仅更新无效,还可能在文档里新增多余的address字段。

修复方案

  1. 修正查询条件,直接用字符串匹配key字段
  2. 把更新的字段名改成模型里定义的wallet_address
  3. 可选:补充对addressPassed的参数校验,避免传入空值

修复后的代码

exports.updateSingleAddress = (req, res) => {
  let keyPassed = req.body.key;
  let addressPassed = req.body.address;
  
  // 补充参数校验,避免空值更新
  if (!keyPassed || !addressPassed) {
    return res.status(400).send({ message: "key和address参数不能为空" });
  }
  
  // 修正查询条件:直接匹配String类型的key字段
  const myquery = { key: keyPassed };
  // 修正更新字段名,和模型保持一致
  const newvalues = { $set: { wallet_address: addressPassed } };
  
  Address.updateOne(myquery, newvalues)
    .then(data => {
      // 可以判断是否有文档被修改,返回更明确的信息
      if (data.modifiedCount === 0) {
        return res.status(404).send({ message: "未找到匹配的key,更新失败" });
      }
      res.send({ message: "地址更新成功", data });
    })
    .catch(err => {
      res.status(500).send({
        message: err.message || "更新地址时发生错误"
      });
    });
};

内容的提问来源于stack exchange,提问作者ChristianOConnor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 08:40:01