【问题标题】:Mongoose Node.JS Error Cannot create fieldMongoose Node.JS 错误无法创建字段
【发布时间】:2020-06-05 17:16:44
【问题描述】:

我正在尝试更新我的收藏中的一个元素。它是一个二维数组。我尝试直接修改它,我尝试更新整个数组结构并尝试使用 set 方法。没有什么能给我带来成功。

这是我的模型:

var nestedInside = mongoose.Schema({
    x: Number,
    y: Number,
    block: {
        type: Boolean,
        default: false
    }, 
    answer: String,
    question: String,
    questionnr: Number,
    vertical: Boolean,
    questionnr2: Number,
    question2: String,
    vertical2: Boolean,
    tmp: String,
    question_vertical: String,
    question_horizontal: String,
    question_num: Number
})

var schema = mongoose.Schema({
    grid: [[nestedInside]]
})

var create = mongoose.model('puzzles', schema);

这是我执行以下代码时的错误:

puzzle.findOne({_id:req.params.id}).exec(function(err,data) {
   var grid = data.grid;
   grid[req.body.xo].id(req.body._id)["question_vertical"] = req.body.question_vertical
   data.save();
errorMongoError: Cannot create field 'question_vertical' in element {0: [ { block: false, _id: ObjectId('5dec2f1dde95855cf9130f50')...

当我尝试替换整个数组时,它说:Cast to Array failed for value

有人知道吗?我没有我知道的选择。

样本数据:


   "_id":{
      "$oid":"5da1097076a05f2c50f34001"
   },
   "free":false,
   "package":{
      "$numberInt":"6"
   },
   "grid":[
      [
         {
            "block":false,
            "_id":{
               "$oid":"5da1097076a05f2c50f34008"
            },
            "x":{
               "$numberInt":"1"
            },
            "y":{
               "$numberInt":"1"
            },
            "answer":"G",
            "question_num":{
               "$numberInt":"1"
            },
            "question_vertical":"Abk.: Grundgesetz",
            "question_horizontal":"kostenlos"
         },
    ....
       ]
    ],
    ....

【问题讨论】:

  • 你能提供一个示例文件
  • 我已将其添加到我的帖子中

标签: javascript node.js mongodb mongoose


【解决方案1】:

您说您更新了数组结构。您是否从数据库中删除了旧项目(或者甚至更好地删除了当前数据库)?否则这可能会导致错误的文档解析 (Mongoose - Redefining schema structure)。

【讨论】:

  • 架构在任何时候都没有改变,一直都是一样的。我只取数组的一个元素并更改一个已经存在的值。我之前记录了元素以检查它是否已填充。然后我更改字符串值,然后在保存错误时发生。
【解决方案2】:

好的,我想出了一个解决方案,或者说一个解决方法。

我克隆整个文档,删除旧文档并再次保存克隆的文档。这工作得很好。仅适用于可能遇到相同问题的人。

【讨论】:

    猜你喜欢
    • 2016-12-15
    • 2018-06-01
    • 2020-06-09
    • 1970-01-01
    • 2018-07-03
    • 1970-01-01
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多