2017-04-18 37 views
0

我目前正在嘗試使用iOS和Parse-Server進行實時查詢。以下是我的設置爲我解析 - 服務器:Parse-Server LiveQuery不發送事件

... 

let api = new ParseServer({ 
    databaseURI: databaseUri || constants.DATABASE_URI, 
    cloud: process.env.CLOUD_CODE_MAIN || constants.CLOUD_CODE_MAIN, 
    appId: process.env.APP_ID || constants.APP_ID, 
    masterKey: process.env.MASTER_KEY || constants.MASTER_KEY, 
    serverURL: process.env.SERVER_URL || constants.LOCAL_SERVER_URL, 
    fileKey: process.env.FILE_KEY || constants.FILE_KEY, 
    appName: process.env.APP_NAME || constants.APP_NAME, 
    publicServerURL: process.env.SERVER_URL || constants.LOCAL_SERVER_URL, 
    liveQuery: { 
     classNames: [Parse.User] 
    } 
}); 

... 

let port = process.env.PORT || 1337; 

let httpServer = require('http').createServer(app); 
httpServer.listen(port, function() { 
    console.log('parse_server running on port ' + port + '.'); 
}); 

ParseServer.createLiveQueryServer(httpServer, {logLevel: 'VERBOSE'}); 

... 

這是我在iOS應用代碼:

let liveQueryClient = ParseLiveQuery.Client(server: "ws://serverurl/", applicationId: "appID", clientKey: "clientKey") 

let query = PFUser.query()?.whereKey("objectId", equalTo: "ABC123") as! PFQuery<PFUser> 

let subscription = self.liveQueryClient.subscribe(query).handle(Event.updated) { _, user in 
    debugprint("\(user)") 
} 

調試的地方,我可以看到用戶正在使用的插座,因爲連接服務器日誌:

info: Create new client: 0 

,當我斷開,服務器日誌:

info: Client disconnect: 0 

我的問題是,無論何時修改Parse Dashboard中的User對象,Nothings在服務器端登錄,並且客戶端都不會收到任何事件。

有沒有另一種方法來設置它?

非常感謝您的幫助。


更新(17年4月27日):

我仍然還沒有得到這個工作。我不完全確定問題是什麼。我跟着無數的教程無濟於事。

有誰知道如果用戶類不能用於實時查詢?

+0

我也在努力解決您的問題......試了一切,等待一個解決方案。 – Etgar

+0

嗨,看看這個答案https://stackoverflow.com/a/44721816/5928180,它可能會幫助你解決你的問題。 –

+0

嗨,Parse中的「User」類實際上在數據庫中表示爲「_User」,所以無論你在哪裏指定要嘗試接收的ParseObject類,都要確保包含下劃線。 –

回答

0

我不知道IOS代碼然而,這部分如:

liveQuery: { 
    classNames: ["YourColumnNameInDatabase","AnotherColumnName"] 
} 

請一定要檢查您訂閱正確的類名(在的ColumnName DB) 希望這有助於有點...

+0

我查過了,它都很好。甚至試圖將它從「Parse.User」改爲「User」,那也沒用。 (還是)感謝你的建議。 – RPK