2017-01-20 36 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模塊,所以我沒有得到它,你能更好地解釋我嗎? –

相關問題