1

Google で回答を探していましたが、見つかった結果に基づいて、nano モジュールを使用して CouchDB にテーブルが存在するかどうかを確認できます。

ただし、カスタム関数にしようとすると、常に「未定義」が返されます。関数は次のとおりです。

var exists = function( id ) {

    this.head( id, function( err, body, header ) {

        if ( header[ 'status-code' ] == 200 )
            return true;
        else if ( err[ 'status-code' ] == 404 )
            return false;

        return false;

    });

}

あれを呼べ:

nano.db.create( 'databaseName', function() {

    var users = nano.use( 'databaseName' );

    console.log( exists.call( users, 'documentToCheck' ) );

});

ここで何が間違っていたのですか?私はそれを正しく理解できないようです。

4

1 に答える 1

2

内部匿名関数が必要な値を返すため、関数が存在すると未定義が返されます

この病気の治療法は、あなたの機能が存在することを反映することです

var exists = function( id , cb) {

    this.head( id, function( err, body, header ) {

        if ( header[ 'status-code' ] == 200 )
            cb(true);
        else if ( err[ 'status-code' ] == 404 )
            cb(false);

        cb(false);

    });

}

使用法:

exists.call(users, 'documentToCheck', function(check) {
    console.log(check);
});
于 2014-08-20T22:36:09.450 に答える