サーバー全体で再利用できるオブジェクトの作成に取り組んでいます。ただし、次の例では、「create」を2回呼び出したように見えます。なぜ何かアイデアはありますか?これをより適切に構成できますか?
var mongo = require('mongodb');
var Server = mongo.Server;
var Db = mongo.Db;
var server = new Server('localhost', 27017, {auto_reconnect: true});
var Database = function(name) {
this.db = new Db(name, server);
};
Database.prototype.create = function(collection, document, callback) { var db = this.db;
db.open(function(error, db) {
if (!error) {
db.createCollection(collection, function(error, collection) {
collection.insert(document, {safe: true}, function(error, result) {
if (error) return callback(error, null);
return callback(null, result);
});
});
}
return callback(error, null);
});
};
var data = new Database('foo');
data.create('testing', {'foo': 'bar'}, function(err, result) {
console.log(result);
});
ファイルを実行すると、次のようになります。
kenneth@apollo:~/Projects/dwibbles$ node db.js
null
[ { foo: 'bar', _id: 506ba4b0e3441ab82a000001 } ]
なぜこれが2回呼び出されるのですか?
console.log(result);
更新:私が間違った条件を持っていたことが指摘されました。
if (!error) {
db.createCollection(collection, function(error, collection) {
collection.insert(document, {safe: true}, function(error, result) {
if (error) return callback(error, null);
return callback(null, result);
});
});
} else {
return callback(error, null);
}