首页 新闻 会员 周边 捐助

mongodb的updata()方法

0
悬赏园豆:50 [已解决问题] 解决于 2016-04-14 20:35

毕设采用的express与mongodb,首次自己写一些接口,遇到问题。在使用mongodb的updata命令,想要同时进行对某些字段进行修改与新增可行么?

//支持项目
Project.supportPro= function(proId,userData, callback) {

//打开数据
db.open(function (err, db) {
if (err) {
return callback(err);
}
//读取 project 集合
db.collection('project', function (err, collection) {
if (err) {
db.close();
return callback(err);
}
//更新项目已筹金额与支持人
collection.update({
"selfid": proId
}, {
$inc: {
"supportNum": 1,
      "currentMoney":userData.money
     },
$push:{
"support":userData
}
}, function (err) {
db.close();
if (err) {
return callback(err);
}
callback(null);
});
});
});
};

这个方法报错mongoError是什么原因?求解答
倾顾的主页 倾顾 | 初学一级 | 园豆:154
提问于:2016-04-12 22:17
< >
分享
最佳答案
0

这种操作是可行的。

你这边报错的可能原因是你的操作没有分先后顺序。比如db还没有open,你就开始写数据了。你得看一下一般的mongodb用法。链接开了就不要再关了。

收获园豆:30
幻天芒 | 高人七级 |园豆:37205 | 2016-04-13 09:36

试了下把db.close()去掉了,依旧是报这个错误,但是如果updata()方法的更新操作符只写$push或$inc其中一个是可行的,请问下这个是什么原因,有解决办法么?谢谢

倾顾 | 园豆:154 (初学一级) | 2016-04-13 20:02

@倾顾: 你把代码格式化一下吧,另外,贴一下错误信息。

幻天芒 | 园豆:37205 (高人七级) | 2016-04-13 21:33
其他回答(1)
0

在mongodb查询出错的情况下,不要轻易的调用close来断开数据库的连接,nodejs中很多mongodb数据库的操作都是基于异步的,所以在你进行下一步操作时候其实你并不能确定这个时候mongodb数据库连接是否已经被你断开的了。

 

当你想调用close时候,一定要知道是否在close之后可能还会存在其他的操作.

ps:看你用的应该是node-mongodb-native库吧? ,还有个mongoose可以了解下,相对原生的命令的操作可能mongoose会更直观先

收获园豆:20
visonme | 园豆:1674 (小虾三级) | 2016-04-13 10:13

试了下把db.close()去掉了,依旧是报这个错误,但是如果updata()方法的更新操作符只写$push或$inc其中一个是可行的,请问下这个是什么原因,有解决办法么?嗯,我用的是node-mongodb-native的库,如果用mongoose的话代码改动的地方会很大么?

支持(0) 反对(0) 倾顾 | 园豆:154 (初学一级) | 2016-04-13 20:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册