Dictionary 在云代码中创建ParseObject作为键的字典只会给出[Object Object]

Dictionary 在云代码中创建ParseObject作为键的字典只会给出[Object Object],dictionary,parse-platform,Dictionary,Parse Platform,我正在Parse.com中用java脚本创建一个类似于以下内容的字典[,List]。此字典在response.success中设置,用于客户端检索。我的问题是在客户端,我只收到dictionary中的一行,因为Parse.com没有序列化密钥。它正确地序列化了值。在键中,它只插入[Object Object],所以每次在映射中保存键值对时都会被重写 这是我的密码 query.find({ success: function(eventResults) { console

我正在Parse.com中用java脚本创建一个类似于以下内容的字典
[,List]
。此字典在
response.success
中设置,用于客户端检索。我的问题是在客户端,我只收到dictionary中的一行,因为Parse.com没有序列化密钥。它正确地序列化了值。在键中,它只插入
[Object Object]
,所以每次在映射中保存键值对时都会被重写

这是我的密码

query.find({
    success: function(eventResults) {

        console.log("Got results from Event table");
        var speakersList = {};

        // we now will get complete event speaker table and process it in a loop
        // then make a dictionary
        var query = new Parse.Query("EventSpeaker");
        query.include("SpeakerId");
        query.include("EventId");
        query.find({
            success: function(eventSpeakerResults) {
                // now we have all event speaker table
                console.log("Got results from EventSpeaker table");

                for(var i = 0; i < eventResults.length; i++)
                {
                    var speakersInThisEvent = [];

                    // notice this idiot "id" here it ate my 1 hour :-/
                    var eventObjectId = eventResults[i].id;

                    console.log("EventId: " + eventObjectId);

                    for(var j = 0; j < eventSpeakerResults.length; j++) 
                    {
                        if(eventObjectId == eventSpeakerResults[j].get("EventId").id)
                        {
                            console.log("Found a match !!");
                            speakersInThisEvent.push(eventSpeakerResults[j].get("SpeakerId"));
                        }
                    }

                    // this logs prints perfectly
                    console.log(eventResults[i].get("Location"));
                    //eventResults[i].Location = eventResults[i].get("Location");
                    //speakersList[JSON.stringify(eventResults[i])] = speakersInThisEvent;
                    //this is what creating issues eventResult[i] is always same (Object object) 
                    speakersList[eventResults[i]] = speakersInThisEvent;
                }

                // to be called only once
                response.success(speakersList);
            },
            error: function() {
                response.error("EventSpeaker Querying failed");
            }

        });
    },
query.find({
成功:函数(eventResults){
log(“从事件表获得结果”);
var speakersList={};
//现在我们将得到完整的事件演讲者表,并在循环中处理它
//然后编一本字典
var query=newparse.query(“EventSpeaker”);
查询。包括(“SpeakerId”);
查询。包括(“事件ID”);
查询.查找({
成功:函数(eventSpeakerResults){
//现在我们有了所有的活动发言人表
log(“从EventSpeaker表获得结果”);
对于(var i=0;i

这里,在keys中,我只得到了
[Object Object]
。我不能使用
JSON.stringify()
作为它内部的字符串化指针对象。

问题是,您试图使用Parse.Object作为对象键。JavaScript只支持字符串和数字作为对象的键

在这种情况下,我将使用
eventResults[I].id
作为
speakerList
对象中的键

如果需要返回几个不同的对象,如扬声器阵列和这些键要映射回的对象阵列,则可以在响应中将它们包装在另一个对象中返回:

response.success({ 
    speakers : speakersList,
    events : eventResults
});

然后,您将在响应中发送所有内容。

好的,我得到了答案,但是,在我的情况下,每个事件都有一个演讲者列表。我如何才能以包装对象的方式将事件映射到相应的speakerlist?映射已经存在。speakerlist将事件对象ID映射到事件中的演讲者数组。一旦您知道对于事件,您可以使用
speakersList[event.id]