我以前使用过 Parse SDK,但用于 native 移动开发 - Objective-C 和 Java。 但是,我绝不是一名 JavaScript 开发人员。 我正在尝试使用 Node 并使用 Parse 来存储一些用于 API im 制作的东西。 这可能既是 JavaScript 的无能,也是 Parse 的问题。
应用上下文
I do a specific twitter scrape each day - a TweetDay - which is basically just a Parse row, with an Array value, this is an Array of TweetPairs.
A TweetPair is just a pairing of the tweet text and its associated id.
{ "id": "NCnjSDnjScn",
"text" : "Be cool Yolanda, be cool!" }
//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 中我可以做一个查询,然后调用查询返回的指针获取实际值(因为查询返回 PFObject 指针)。值得注意的是,我得到了正确的 Parse 对象 ID,而我的 Pairs 数组只是正确指针的集合。
我在问什么 一旦 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 类型,所以很容易。)
Parse 控制台(为了完整性)
干杯。
最佳答案
所以我找到了这个方便的小方法,叫做 .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"
]
关于javascript - 从返回的查询数组中获取对象的值 (Parse.com + Node.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23330219/