Пн goose Node.JS Ошибка Не удается создать поле - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь обновить элемент в моей коллекции. Его двумерный массив. Я попытался напрямую изменить его, я попытался обновить всю структуру массива и попытался использовать метод 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')...

Когда я пытаюсь заменить весь array он говорит: 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"
         },
    ....
       ]
    ],
    ....

Ответы [ 2 ]

0 голосов
/ 05 июня 2020

Хорошо, я нашел решение, или, скажем так, обходной путь.

Я клонирую весь документ, удаляю старый и снова сохраняю клонированный документ. Это сработало нормально. Просто для тех, у кого может быть такая же проблема.

0 голосов
/ 28 мая 2020

Вы сказали, что обновили структуру массива. Вы удалили старые элементы из базы данных (а еще лучше удалили текущую базу данных)? В противном случае это могло привести к неправильному синтаксическому анализу документа ( Пн goose - Переопределение структуры схемы ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...