mongodb insert方法探秘
发布于 10 年前 作者 qianjiahao 3709 次浏览 最后一次编辑是 8 年前 来自 问答

昨天写的一个注册功能,发现一直有问题,今天测试发现,问题貌似出在insert上,果断上代码~

User.prototype.save = function (callback) { var user = { name: this.name, password: this.password, email: this.email } mongodb.open(function (err, db) { if (err) return callback(err); db.collection(‘users’, function (err, collection) { if (err) { mongodb.close(); return callback(err); } collection.insert(user, {safe: true}, function (err, user) { mongodb.close(); if (err) return callback(err); callback(null, user); }); }); }); };

我发现这个insert 里的回调 callback 给我返回的user 都是undefined,后来我查了网上,说是insert并不是立刻执行,但是有个一个问题,node的异步机制不应该是 等待其执行完毕后,再执行回调嘛~,怎么会出现这种情况呢~该如何解决呀,各位大神~~

4 回复

不是的,node所有函数都是异步的,所以无法确定执行顺序,于是有了promise/A+规范

@i5ting 刚刚看了promise/A+规范,收获很多,3Q。 就是说,我应该用promise来改写我这个注册功能呗,让他符合正确的执行顺序?

@qianjiahao mongoose or mongoskin都封装好了

@i5ting ok,瞧瞧去~~

回到顶部