2015-10-16 74 views
1

我試圖運行一個查詢,從用戶表中檢索一組特定的用戶,並使用Parse JS SDK將它們呈現給定的登錄用戶。 起初我運行一個查詢,如:解析用戶查詢只檢索當前用戶

(new Parse.Query(Parse.Object.extends("_User"))).containedIn("objectId", [/* list of user ids */]).find(/* success & error blocks */); 

但後來我學會了比較正確的做法是:

(new Parse.Query(Parse.User)).containedIn("objectId", [/* list of user ids */]).find(/* success & error blocks */); 

但即使這樣,我還是會回到一個空列表。我仔細檢查了分貝數據庫,並確定我傳遞的ID在那裏,他們是。只是爲了試試它:

(new Parse.Query(Parse.User)).find(/* success & error blocks */); 

然後我找回了當前用戶對應的用戶對象。所以看來我的用戶查詢只能訪問當前用戶。我還注意到,當我嘗試從Parse API Console運行同等查詢時,我得到了相同的結果!這是某種全球性的設置,還是我做錯了什麼?謝謝!

回答

1

我會建議不要將所有這些調用壓縮爲一行以節省行數。它犧牲了可讀性。儘管從技術上講它沒有錯,文檔甚至說這些調用會返回一個查詢,所以你可以將調用連接到每個調用。

雖然我沒有看到你的電話有什麼問題。你如何訪問檢索到的對象?什麼是您傳遞給containsIn的objectIds列表?我想,我們需要更多的代碼。

編輯 - 我會說我80%確定,沒有更多信息,這是一個ACL/CLP問題。轉到儀表板,點擊_User類,按安全性,並查看讀/寫設置是什麼。

+0

對不起,這實際上並不是我確切的代碼,只是爲了簡潔起見而濃縮。 –

+0

除最後一種情況外,沒有檢索到的對象。我正在監視網絡請求。該列表只是一個objectId字符串的數組... –

+0

但你從哪裏拉他們?我希望看到一個屏幕截圖,您可以輸出要查詢的字符串數組,以及數據庫的屏幕截圖,以顯示這些objectIds實際上屬於用戶查詢的對象。 –

2

由於Parse中的用戶安全設置,我相信您必須使用CloudCode。嘗試將其轉換爲雲代碼功能,並在雲代碼功能之前包括

Parse.Cloud.useMasterKey() 

。這是Parse的安全「功能」,以確保人們無法編輯和訪問其他用戶配置文件和信息。

見解析安全網站瀏覽:

https://parse.com/docs/js/guide#security-object-level-access-control

和更多的使用和實施useMasterKey的考慮()和它的持久性。

https://parse.com/docs/js/guide#security-implementing-business-logic-in-cloud-code

+0

嗯...這是不幸的...從我的谷歌搜索和SDK,但它似乎是可能的...是僅僅因爲用戶登錄?具體指的是:https://parse.com/docs/js/guide#users-querying –

+0

等待,從你的第一個鏈接,這是否意味着這是可能的,如果我查詢「_User」對象?我只需要閱讀,而不是寫... –

+1

是的。我明白你的意思。在文檔中不清楚。我嘗試了很多次,遇到了同樣的問題。有一個匿名用戶的能力,但我懷疑這會解決問題。雲代碼允許他們保護他們的用戶對象,因爲雲代碼不能只輸入到控制檯中。 –

0

貌似CLP問題給我。也許查找您的用戶類的權限被禁用。轉到您的用戶類,點擊安全性,切換到前進,然後檢查查找權限是否被勾選。