15

Parse クラウド コードでランダムに生成された registrationId を保存したいので、その値が既に DB にあるかどうかを確認する必要があります。正しい文字列が得られるまで、再帰的にこれを行う必要があります。これが私がこれまでに試したことです。問題は、findRegistrationId() が約束ではないため、then() を使用できないことです。それを約束または他の回避策にする方法はありますか? クラウドコード用

function getRandomString()

{
    var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZ";
    var string_length = 4;
    var randomstring = '';

    for (var i=0; i<string_length; i++) {
        var rnum = Math.floor(Math.random() * chars.length);
        randomstring += chars.substring(rnum,rnum + 1);
    }
    return randomstring;
}
function findRegistrationId()
{
    console.log("Enter findRegistrationId")
    var randomString = getRandomString();
    var query = new Parse.Query("Book");

    query.equalTo("registrationId", randomString);

    query.find.then(function(results){
        if(results.length === 0)
        {
            console.log("no registrationId duplicated")
            return randomString;
        }
        //if there is other registrationId we concatenate
        else
        {
            console.log("registrationId duplicated let's recursive it")
            return findRegistrationId();
        }
    },function(error){
        return error;
    })

}

// Use Parse.Cloud.define to define as many cloud functions as you want.
// Gets the unique cool BC identificator. The real glue of BC!
Parse.Cloud.define("GetBookId", function(request, response) {

    var promise = findRegistrationId();

    promise.then(function(result){

        console.log("success promise!!")
        response.success(result);

    }, function(error){
        console.error("Promise Error: " + error.message);

        response.error(error);

    });


});
4

2 に答える 2