Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在NodeJS的DocumentDB的sql查询中传递函数?_Sql_Node.js_Azure_Azure Cosmosdb - Fatal编程技术网

如何在NodeJS的DocumentDB的sql查询中传递函数?

如何在NodeJS的DocumentDB的sql查询中传递函数?,sql,node.js,azure,azure-cosmosdb,Sql,Node.js,Azure,Azure Cosmosdb,Q.1:我想用用户定义的函数在DocumentDB上运行一个查询 var udf = function(users, userid) { var s, _i, _len; for (_i = 0, _len = users.length; _i < _len; _i++) { s = users[_i]; if (s.userid === userid) { return tr

Q.1:我想用用户定义的函数在DocumentDB上运行一个查询

 var udf = function(users, userid) {
        var s, _i, _len;
        for (_i = 0, _len = users.length; _i < _len; _i++) {
            s = users[_i];
            if (s.userid === userid) {
                return true;
            }
        }
        return false;
    };




    conversationsQuerySpec = {
        query: 'SELECT * FROM root r WHERE @fn(r.users, @userid) AND r.id=@id',
        parameters: [{
            name: '@fn',
            value: udf
        }, {
            name: '@userid',
            value: userid
        }, {
            name: '@id',
            value: id
        }]
    };

我想运行查询,其中medium=derman,我不想通过level=2nd,如何运行此查询?

Q1。您必须独立上传UDF,而不是作为参数。在运行该查询之前,只需使用适当的SDK调用将其插入即可

  • 首先,在集合中使用createUserDefinedFunction注册UDF,其名称类似于myUserDefinedFunction
  • 然后您可以按名称在查询中使用它,例如从根r中选择*其中udf.myUserDefinedFunction(r.users,@userid)和r.id=@id
  • 问题2。这应该有效(未经测试):


    第一件事:请把你的问题分成两个独立的问题,因为它们是两个完全不同的东西。拉里,我已经删除了我的答案。你的更好!你不必出于礼貌那样做。另外,你的网站有关于如何上传的更多细节。也许你们可以在我的答案中加上这一点?谢谢你们两位,Ans.2对我来说很好,但我仍然不明白Ans.1如何在集合中插入,在哪里我可以这样做?我在NodeJS中使用documentbuilder NPM模块,所以我没有得到它,您能更详细地解释一下吗?有一个方法,
    upsertUserDefinedFunction()
    found。也就是说,对于分区集合上的存储过程,fanout存在一个无法正常工作的问题。我不知道这是否适用于UDF。解决每个问题的方法是删除然后创建。
    var student = {
         name: 'piyush',
         classes: [{
           level: '1st',
           medium: 'spanish'
         },{
           level: '2nd',
           medium: 'german'
         }]
    }
    
    SELECT VALUE student FROM student JOIN c in student.classes WHERE c.medium = "german"