javascript - mongoose保存报错
问题描述
// 我在用户Schema中创建了专栏数组(articles),专栏是对象,底下articles数组嵌套了文章对象,结构类似下图:// User.articles = [专栏一, 专栏二 ...]// 专栏一.articles = [ 文章一, 文章二 ...]// 实际操作中,只要涉及到修改原有值,一保存就报错// 如splice,pop,或者直接赋值都报错,但push就成功// 找到专栏,对专栏文章进行splice可以成功修改,但保存操作时报错user.articles[cindex].articles.splice(aindex, 1, newarticle) // cindex 专栏序号 aindex 文章序号id = column.articles[aindex]._idconsole.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:nodejsmyblognode_modulesmongooselibservicesmodelapplyHooks.js:111:29)// at User.findOne.then.user (C:nodejsmyblogmodelsUserActions.js:299:10)// at tryCatcher (C:nodejsmyblognode_modulesbluebirdjsreleaseutil.js:16:23)// at Promise._settlePromiseFromHandler (C:nodejsmyblognode_modulesbluebirdjsreleasepromise.js:512:31)// at Promise._settlePromise (C:nodejsmyblognode_modulesbluebirdjsreleasepromise.js:569:18)// at Promise._settlePromise0 (C:nodejsmyblognode_modulesbluebirdjsreleasepromise.js:614:10)// at Promise._settlePromises (C:nodejsmyblognode_modulesbluebirdjsreleasepromise.js:693:18)
当我使用 save(err=>console.log(err)) 时,报错versionkey错误,之后我禁用掉versionkey便暂时防止了这个错误的产生。但终究还是没有弄清楚这个问题的来由。还请各位大大详解。
问题解答
回答1:对数据库数据修改和保存都需要使用相关方法才行,不能说直接操作数据属性,完了用save
回答2:save方法有参数
相关文章:
1. MYSQL新建用户设置可以远程访问的问题2. python - 求一个在def中可以实现调用本def满足特定条件continue效果的方法(标题说不太清楚,请见题内描述)3. java - mybatis怎么实现在数据库中有就修改,没有就添加4. $fields = $values = [];这条代码一直定义不了,一直报错,老师的源码也是被报错的,执行不了,请问该怎么解决这个问题5. node.js - nodejs和前端JavaScript 字符串处理结果不一样是什么原因?6. 各位谁知道这个CSS时候哪里出错了???7. mysql - 我的myeclipse一直连显示数据库连接失败,不知道为什么8. mysql 5.7单表300万数据,性能严重下降,如何破?9. mysql - SQL操作时间的函数?10. mysql 为何insert的时候会有lock wait timeout 异常
![$fields = $values = [];这条代码一直定义不了,一直报错,老师的源码也是被报错的,执行不了,请问该怎么解决这个问题](http://www.haobala.com/attached/image/news/202205/093622cb60.png)