0

node.js + perfectapiを使用してMongoDBに対してサーバー側 API を作成するにはどうすればよいですか?

このようにMongoデータベースをセットアップしました:

dbpath = /Users/me/srv/db
bind_ip = 127.0.0.1
noauth = true
verbose = true

次のような完璧なapiスクリプトsrv.js:

var mongo = require('mongodb'), Server = mongo.Server, Db = mongo.Db;
var db = new Db('timedb',new Server('localhost',27017,{auto_reconnect:true},{}));

db.open
(
    function(error,unused)
    {
        if(error) console.log("Cannot connect to database.");
        else console.log("We are now connected to the database.");
    }
);

var perfectapi = require('perfectapi');
var path = require('path');
var configPath = path.resolve(__dirname,'api.json');
var parser = new perfectapi.Parser();

parser.on
(
    "create",
    function(config,callback)
    {
        console.log(config)
        db.collection
        (
            'times',
            function(error,collection)
            {
                if(error) 
                {
                    console.log("Error in collection");
                    callback(error);
                }
                else
                {
                    console.log(config.options.time);
                    console.log("Success in collection");
                    collection.insert
                    (
                        config.options,
                        {safe:true},
                        function(error,callback)
                        {
                            if(error) console.log("Error inserting: "+error);
                            else
                            {
                                db.close();
                                callback(null,{"guid":"123"});
                            }
                        }
                    );
                }
            }
        );
    }
);

module.exports = parser.parse(configPath);

そして、次のような api.json :

{
    "exports":"srv",
    "path":"api/v1",
    "signature":
    [
        {
            "name":"create",
            "synopsis":"Create a new record.",
            "verb":"POST",
            "options":
            [
                {"option":"time","required":true}
            ],
            "returns":
            [
                {"name":"guid","description":"The ID of the new record."}
            ]
        }
    ]
}

で実行すると

node srv.js create --time 2012-09-10

私は得る

{ environment: {}, options: { time: '2012-09-10' } }
2012-09-10
Success in collection
We are now connected to the database.

その後、スクリプトがハングし、ディスク上にデータベースが作成されません。一方、MongoDB を停止してスクリプトを再度実行すると、

{ environment: {}, options: { time: '2012-09-10' } }
2012-09-10
Success in collection
Cannot connect to database.

そしてスクリプトは終了します。

4

0 に答える 0