Node.js 为什么我的mongodb异步保存失败?
这是代码;有人指出我哪里出错了吗? 这就是我使用承诺的方式吗?我希望每次执行保存之前,对insert()的调用都会检查是否存在有效的db conn 没有错误,但数据库中没有条目。Node.js 为什么我的mongodb异步保存失败?,node.js,mongodb,promise,Node.js,Mongodb,Promise,这是代码;有人指出我哪里出错了吗? 这就是我使用承诺的方式吗?我希望每次执行保存之前,对insert()的调用都会检查是否存在有效的db conn 没有错误,但数据库中没有条目。 此外,控制台日志“connecting”按预期显示一次-第二次插入将重用连接(或者我希望它会再次使用) 我猜mongoClient.connectAsync(url)是一个异步调用。。。当您尝试返回this.dbconn时,异步调用实际上还没有完成。@tymeJV:他返回一个promise如何检查数据库中是否有条目?请
此外,控制台日志“connecting”按预期显示一次-第二次插入将重用连接(或者我希望它会再次使用)
我猜
mongoClient.connectAsync(url)代码>是一个异步调用。。。当您尝试返回this.dbconn
时,异步调用实际上还没有完成。@tymeJV:他返回一个promise如何检查数据库中是否有条目?请注意,您应该返回insert
和then()
回调中的承诺。当然,蓝鸟无论如何都应该报告未处理的拒绝。在调用save()
后尝试登录。你的日志里有吗?
// mongoApi.js
var assert = require('assert');
var promise = require('bluebird');
var mongoClient = promise.promisifyAll(require('mongodb').MongoClient);
var log = require('./logger.js');
var url = 'mongodb://localhost/yangDB';
var dbconn = false;
var getDb = function () {
if (!this.dbconn) {
console.log('connecting...')
this.dbconn = mongoClient.connectAsync(url);
}
return this.dbconn;
};
var insert = function (doc) {
getDb().then(function (db) {
db.collection('yangTemplates').save(doc);
});
};
insert( { "first insert" : new Date() } );
insert({ "second insert" : new Date() } );
// eventually: module.exports.insert = insert;
// main.js: var mapi = require('./mongoApi.js'); mapi.insert({a:true});