2015-11-14 30 views
0

我構建了一個包含幾個變量的字典。在變量的值被放置之前發生的字符串化

我對它進行了字符串化並將其作爲PUT請求發送。

請求會通過,但是這些字段最終會被填入變量名稱(friendRequest,friendRequester, requestedFriend)而不是它們的值!

Parse.Cloud.define("createChatRoom", function(request, response) { 

    var friendRequest = request.params.friendRequestId.toString(); 
    var friendRequester = request.params.friendRequester.toString(); 
    var requestedFriend = request.params.requestedFriend.toString(); 

    var chatPayload = {} 
    chatPayload["room"] = {friendRequest: true}; 
    chatPayload["members"] = {friendRequest: {friendRequester: true, requestedFriend: true}} 

    (...) 

    Parse.Cloud.httpRequest({ 
    url: 'https://myapp.firebaseIO.com/app' + '.json', 
    headers: {'Content-Type': 'application/json'}, 
    method: 'PUT', 
    params: {'auth': token}, 
    body: JSON.stringify(chatPayload) 
    }).then(function(httpResponse) { 
     response.success("Successfully created chat room!"); 
    },function(httpResponse) { 
     response.error("failed to create chat room" + httpResponse.text) 
    }) 
}) 

我在做什麼錯?

+0

你試過在你的params屬性中傳遞Content-Type作爲'application/json'嗎?您正在使用的http請求客戶端可能會默認使用其他功能。 – CaptainAdams

+0

首先,您應該對'chatPayload.room'和'chatPayload.members'使用點語法。其次,你應該使用'x.toString()'而不是'String(x)'來明確地強制轉換爲字符串。 – PitaJ

+0

@PitaJ gotcha,關於這個問題的任何想法? –

回答

0

回答我的問題:

現在看來似乎是stringify荷蘭國際集團甚至變量名,因爲鑰匙,他們沒有被宣佈。

使用索引器單獨聲明每個鍵都適用於我,但它看起來不必要地冗長。必須有一個更簡潔的方式...

var chatPayload = {}; 
    chatPayload.room = {}; 
    chatPayload.room[friendRequest] = true; 

    chatPayload.members = {}; 
    chatPayload.members[friendRequest] = {}; 
    chatPayload.members[friendRequest][friendRequester] = true 
    chatPayload.members[friendRequest][requestedFriend] = true 
相關問題