Cosmos DB Javascript存储过程-错误?

时间:2018-07-05 22:13:42

标签: javascript stored-procedures azure-cosmosdb

我一直在使用JavaScript API(https://docs.microsoft.com/en-us/azure/cosmos-db/programming#javascript-language-integrated-query-api)在Azure Cosmos DB中的存储过程中观察到一些奇怪的行为

假定数据库中存在一个带有body.id ='---'的文档,则下面的过程可以正确地返回该文档。但是,如果我注释“ return found”行,并用“ if(1 == 1)”取消注释行,则存储过程将返回空结果。我尝试将其更改为if(found){return found;} else {return false;}'-相同的空输出。同样,如果我写'found = found &&(1 == 1);',也会发生同样的情况。在'let found = c.body.id!= null && c.body.id == t;'之后

这是Javascript错误还是我做错了什么?

// SAMPLE STORED PROCEDURE
function sample() {
    __.filter(c=>{
        //return true;
        let t = "---";

        let found = c.body.id != null && c.body.id ==t;


  return found; <---
    //if (1==1){
    //    return found;
    //}

}
, {pageSize: -1}, 

    (a, b, c)=>{

        __.response.setBody(b);
            return;
    });
}

1 个答案:

答案 0 :(得分:0)

我会重现您的问题。

  

以下JavaScript构造未针对Azure进行优化   Cosmos DB索引:

     

控制流(例如,是否,for,while)函数调用

根据doc中的语句,如果不建议在predicateFunction中使用if。

您可以按return expression(e.g. x.isMetadata === true);

过滤文档