毕设采用的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是什么原因?求解答
这种操作是可行的。
你这边报错的可能原因是你的操作没有分先后顺序。比如db还没有open,你就开始写数据了。你得看一下一般的mongodb用法。链接开了就不要再关了。
试了下把db.close()去掉了,依旧是报这个错误,但是如果updata()方法的更新操作符只写$push或$inc其中一个是可行的,请问下这个是什么原因,有解决办法么?谢谢
@倾顾: 你把代码格式化一下吧,另外,贴一下错误信息。
在mongodb查询出错的情况下,不要轻易的调用close来断开数据库的连接,nodejs中很多mongodb数据库的操作都是基于异步的,所以在你进行下一步操作时候其实你并不能确定这个时候mongodb数据库连接是否已经被你断开的了。
当你想调用close时候,一定要知道是否在close之后可能还会存在其他的操作.
ps:看你用的应该是node-mongodb-native库吧? ,还有个mongoose可以了解下,相对原生的命令的操作可能mongoose会更直观先
试了下把db.close()去掉了,依旧是报这个错误,但是如果updata()方法的更新操作符只写$push或$inc其中一个是可行的,请问下这个是什么原因,有解决办法么?嗯,我用的是node-mongodb-native的库,如果用mongoose的话代码改动的地方会很大么?