CosmosDb Хранимая процедура В My Javascript есть ошибка - PullRequest
0 голосов
/ 01 апреля 2020

В моем Javascript есть ошибка, но я просто не могу понять, почему. В приведенном ниже коде при вызове функции

function replaceDoc(document,callback)

документ равен нулю. Я проверил, что в ленте есть документы от

   function tryQuery(callback) {...

и есть какая-то ошибка. Процедура работает нормально, и тело ответа показывает это. Где моя ошибка, пожалуйста?

function bulkChangeJobNumber(docs) {
var collection = getContext().getCollection();
var collectionLink = collection.getSelfLink();
var response = getContext().getResponse();

var responseBody = {
    docsRetrieved: 0,
    msg:'',
    msg2:''
}
var docs;
var count = 0;

//get the docs
tryQuery(callback);


function tryQuery(callback) {

    var isAccepted = collection.queryDocuments(
        collection.getSelfLink(),
        "SELECT * FROM c WHERE c.ty = 'job' AND NOT  IS_DEFINED(c.jobNumber)", function (err, feed, options) {
            if (err) throw err;
            // Check the feed and if empty, set the body to 'no docs found',
            // else take 1st element from feed
            docs = feed;
            responseBody.docsRetrieved = docs.length;
            responseBody.msg = options;
            responseBody.msg2 = docs[0];
            if (feed.length == 0) {
                response.setBody("No Docs");
            }
            else{
                replaceDoc(docs[count],callback);
            }
        });
        if (!isAccepted) {
            response.setBody("The query was not accepted!");
            return;
        }
}
function replaceDoc(document,callback){

    if(document == null){
        responseBody.msg = "document is null";
        response.setBody(responseBody);
        return;
    }

    document.jobNumber = document.jobId;
    var accept =  collection.replaceDocument(document._self,document, callback);
    if(!accept){
        response.setBody(`Processed: ${count} docs`);
    }
}
function callback(err,doc,options){

    if  (err) throw err;
    count++;
    if(count > docs.length){
        response.setBody(`processed all ${count} docs`)
    }else{
        replaceDoc(docs[count],callback);
    }

}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...