2017-01-20 26 views
-1

问题1:我想和用户定义的函数上DocumentDB运行一个查询,如何在DocumentDB的sql查询中为NodeJS传递函数?

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 [email protected]', 
     parameters: [{ 
      name: '@fn', 
      value: udf 
     }, { 
      name: '@userid', 
      value: userid 
     }, { 
      name: '@id', 
      value: id 
     }] 
    }; 

但问题是,这个查询没有运行抛出错误。

Q.2:我在documentDB 1个对象,具有阵列状:

var student = { 
    name: 'piyush', 
    classes: [{ 
     level: '1st', 
     medium: 'spanish' 
    },{ 
     level: '2nd', 
     medium: 'german' 
    }] 
} 

我想运行查询,其中介质=德语,我不想通过电平= 2,我怎样才能运行这个查询?

+0

首先要做的事情:请将您的问题分为两个单独的问题,因为它们是两个完全不同的问题。 –

回答

1

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

  1. 首先使用名称为myUserDefinedFunction的集合中的createUserDefinedFunction注册UDF。
  2. 然后你可以在查询中按名称使用它,例如SELECT * FROM root r WHERE udf.myUserDefinedFunction(r.users, @userid) AND [email protected]

Q2。这应该工作(未经测试):

SELECT VALUE student FROM student JOIN c in student.classes WHERE c.medium = "german" 
+1

我删除了我的答案,拉里。你的更好! –

+0

你不需要这么做,因为礼貌。另外,你的周围如何上传更多的细节。也许你可以将其添加回我的答案? –

+0

谢谢你们,Ans.2对我来说工作得很好,但是我仍然不明白Ans.1如何在收藏中插拔,我可以在哪里做到这一点?我在NodeJS中使用了documentbuilder NPM模块,所以我没有得到它,你能更好地解释我吗? –

相关问题