MongoDb に保存するデータを取得しようとしています。事前に次の例に従い、動作することを確認しましたが、この「形式」を使用して独自のテスト アプリを作成しようとしても動作しません。MongoDb はエラーをスローせず、挿入コールバックから doc _id を取得することさえできます。しかし、Mongo シェルに入ると、コレクションはもちろんのこと、ドキュメントも存在しません。
以下は、私が独自のテストアプリで模倣しようとした方法の感触をつかむために、最初に従った例です。
http://blog.ijasoneverett.com/2013/03/a-sample-app-with-node-js-express-and-mongodb-part-1/
以下は失敗している私の試みです。助けてくれてありがとう!
ここに私のDBコードがあります:
var Db = require('mongodb').Db,
Connection = require('mongodb').Connection,
Server = require('mongodb').Server,
BSON = require('mongodb').BSON,
ObjectID = require('mongodb').ObjectID;
Repository = function(host, port){
this.db = new Db('test-mongo-db', new Server(host, port, {safe: true}, {auto_reconnect:true}, {}));
this.db.open(function(){
console.log('db open');
});
};
Repository.prototype.getCollection = function(callback){
this.db.collection('owners', function(error, owners_collection){
if (error) callback(error);
else
callback(null, owners_collection);
});
};
Repository.prototype.createOwner = function(owner, callback){
this.getCollection(function(error, owners_collection){
if (error) callback(error);
else {
owners_collection.insert(owner, function(error, doc){
if (error) callback(error);
else {
console.log('insert was successful: ' + doc[0]['_id']);
callback(null, owner);
}
});
}
});
};
exports.Repository = Repository;
これを呼び出しているコードは次のとおりです。
var Repository = require('../repositories/Repository').Repository;
exports.createOwner = function(req, res){
var owner = {
email : req.body.email,
password : req.body.password,
firstName : req.body.firstName,
lastName : req.body.lastName,
schools : []
};
var repository = new Repository('localhost', 27017);
repository.createOwner(owner, function(error, docs){
if (error) console.log('saving owner failed : ' + error);
else {
console.log('saving owner successful');
res.redirect('/');
}
});
};