从返回的查询数组中获取对象的值(Parse.com + Node.js)

时间:2014-04-27 23:16:45

标签: javascript arrays node.js parse-platform

之前我使用过Parse SDK,但对于原生移动开发者来说 - Objective-C& Java的。 但是,我是绝不是,一个JavaScript开发人员。 我正在尝试使用Node并使用Parse来存储一些用于API制作的东西。 这可能是一个JavaScript无能,因为它是一个Parse问题。

应用上下文

  

我每天都会做一个特定的推特 - 一个TweetDay - 这是   基本上只是一个Parse行,带有一个Array值,这是一个Array   TweetPairs。

     

TweetPair只是推文文本及其相关ID的配对。

     
    

{" id":" NCnjSDnjScn",
      "文本" :"冷静的Yolanda,很酷!" }

  
//Look for a Day in the database against the day we supply
query.equalTo("createdAt", req.params.date );
query.find({
    success: function(results) {
        console.log("Successfully retrieved " + results.length + " item");
        // assume there is only ever one result
        var object = results[0];
        console.log(object.id);
        var tweetsPointer = object.get("Pairs");
        //## IT'LL BLOW UP HERE ##
        // tweetsPointer isn't a Parse object, so it doesn't know about .fetch
        tweetsPointer.fetch({
            success: function(tweets) {
                // The object was refreshed successfully.
                console.log(tweets);
                var arr = new Array();
                for (var i = 0; i < tweets.length; i++) { 
                    arr[i] = tweets[i]["text"];
                }
                // just return an array of the tweet messages for that day.
                res.send(arr);
            },
            error: function(myObject, error) {
                // The object was not refreshed successfully.
                // error is a Parse.Error with an error code and description.
            }
        });
    },
    error: function(error) {
        console.log("Error: " + error.code + " " + error.message);
        res.send("Error: " + error.code + " " + error.message);
    }
});

这就是我想要做的。通常在iOS SDK中我可以进行查询,然后在查询返回的指针上调用fetch来获取实际值(因为查询返回了PFObject指针)。值得注意的是,我得到了正确的Parse对象id,而我的Pairs数组只是正确指针的集合。

我要求 一旦Parse查询返回一个结果(延迟加载,没有值),我如何获取该结果的值。 ie:我的查询返回一个Object,其中包含一个Parse ID数组,而不是实际值。 我现在如何用值填充我的对象数组。

我目前收到的内容

如果在上面的代码中,对于成功案例,我只返回结果对象。 即:

success: function(results) {

    // assuming only ever one result
    var object = results[0];
    res.send(object);
...
}

我很高兴在浏览器中看到

{
    Pairs: [
    {
        __type: "Pointer",
        className: "TweetPair",
        objectId: "wzDNeKJO2n"
    },
    {
        __type: "Pointer",
        className: "TweetPair",
        objectId: "cwXMSPTYEb"
    },
    {
        __type: "Pointer",
        className: "TweetPair",
        objectId: "0FEPlokeIo"
    },
   ..
   ..
    ],

objectId: "5TX1Do98jY",
createdAt: "2014-04-27T07:30:51.658Z",
updatedAt: "2014-04-27T07:30:51.658Z"
}

这是我对Parse经验的期望。然而,我想要的不只是推文的指针,而是推文本身。

即:

{
    Pairs: [
    {
        id: "<twitter id>",
        text: "Be cool yolanda, be cool!"
    },
    {
        id: "sdjvbesjvhBJH",
        text: "Zeds dead baby, Zeds dead."
    },
   ..
   ..
    ],

objectId: "5TX1Do98jY",
createdAt: "2014-04-27T07:30:51.658Z",
updatedAt: "2014-04-27T07:30:51.658Z"
}

通常使用 .fetch 。即:我会在这个数组上调用.fetch,用它们的实际值(推文消息)替换指针。

我以前使用iOS SDK已经能够做到这一点,我真的只是专门询问JS SDK,我如何在结果上调用fetch。 (在iOS中,结果已经是PFObject类型,所以很容易。)

解析控制台(完整性)

The TweetDay object with its array of tweetPairs All of the tweet pairs

干杯。

1 个答案:

答案 0 :(得分:6)

所以我发现这个方便的小方法叫做 .include();

上面的代码

query.equalTo("createdAt", req.params.date );
    query.include("Pairs"); // <-----------------------------win
    query.find({
        success: function(results) {
        console.log("Successfully retrieved " + results.length + " item");
                //Assume one result
                var object = results[0];
                var pairs = object.get("Pairs");
                var arr = new Array();
                for (var i = 0; i < pairs.length; i++) { 
                    arr[i] = pairs[i].get("text");
                }

                res.send(arr);
                ...
}

返回推文列表,而不仅仅是推文的指针。

[
"I can feel the collingwood jealousy haha",
"@Real_Liam_Payne Now you know how i feel",
"Oh good, I feel much better, after wasting what was meant to be a study day. Classic Charle.",
"RT @NatalieTosh: Almost feel as nervous as if I was watching my own team. #ALeagueFinals #GoRoar",
"@BronB28 Feel the warmth of the ground All roads lead to us around Through endless sunsets and towns I can feel it sitting down here"
]

请参阅:https://www.parse.com/questions/javascriptjquery-pointer