suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Javascript – Mungo-Speicherfehler

// 我在用户Schema中创建了专栏数组(articles),专栏是对象,底下articles数组嵌套了文章对象,结构类似下图:
// User.articles = [专栏一, 专栏二 ...]
// 专栏一.articles = [ 文章一, 文章二 ...]
// 实际操作中,只要涉及到修改原有值,一保存就报错
// 如splice,pop,或者直接赋值都报错,但push就成功

// 找到专栏,对专栏文章进行splice可以成功修改,但保存操作时报错
user.articles[cindex].articles.splice(aindex, 1, newarticle) // cindex 专栏序号 aindex 文章序号
id = column.articles[aindex]._id
console.log("发布文章更新,id为:", id) // 能输出结果
user.save()

// 可成功修改,保存报错
user.articles[cindex].articles[aindex].name = 'asdfsadf'
user.save()

// 成功
column.articles.push({
    _id : column.articles[aindex]._id,
    name: 'asdfsdf'
})
user.save()

// 报错如下:
// Unhandled rejection Error
//     at model.wrappedPointCut [as save] (C:\nodejs\myblog\node_modules\mongoose\lib\services\model\applyHooks.js:111:29)
//     at User.findOne.then.user (C:\nodejs\myblog\models\UserActions.js:299:10)
//     at tryCatcher (C:\nodejs\myblog\node_modules\bluebird\js\release\util.js:16:23)
//     at Promise._settlePromiseFromHandler (C:\nodejs\myblog\node_modules\bluebird\js\release\promise.js:512:31)
//     at Promise._settlePromise (C:\nodejs\myblog\node_modules\bluebird\js\release\promise.js:569:18)
//     at Promise._settlePromise0 (C:\nodejs\myblog\node_modules\bluebird\js\release\promise.js:614:10)
//     at Promise._settlePromises (C:\nodejs\myblog\node_modules\bluebird\js\release\promise.js:693:18)

Bei der Verwendung von save(err=>console.log(err)) wurde ein Versionsschlüsselfehler gemeldet. Anschließend habe ich den Versionsschlüssel deaktiviert und das Auftreten dieses Fehlers vorübergehend verhindert.
Aber letztendlich habe ich die Ursache dieses Problems immer noch nicht herausgefunden. Bitte auch ausführlich erläutern.

淡淡烟草味淡淡烟草味2713 Tage vor998

Antworte allen(2)Ich werde antworten

  • 阿神

    阿神2017-06-26 10:59:21

    对数据库数据修改和保存都需要使用相关方法才行,不能说直接操作数据属性,完了用save

    Antwort
    0
  • ringa_lee

    ringa_lee2017-06-26 10:59:21

    save方法有参数

    Antwort
    0
  • StornierenAntwort