首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >无法创建解析对象

无法创建解析对象
EN

Stack Overflow用户
提问于 2015-06-11 14:18:05
回答 1查看 332关注 0票数 0

这是我创建的一个后台工作,它从Google工作表中获取JSON,解析它,创建parse对象,然后将这些对象保存到我的Parse Core中。

代码语言:javascript
代码运行次数:0
运行
复制
Parse.Cloud.job("importPlaylists", function(request, status) {

    // Use master key
    Parse.Cloud.useMasterKey();

    // ID of the Google Spreadsheet
    var spreadsheetID = "someId";
    var sheetID = "anotherId";

    var url = "https://spreadsheets.google.com/feeds/list/" + spreadsheetID + "/" + sheetID + "/public/values?alt=json"; 



    // Cloud function
    Parse.Cloud.httpRequest({
      url: url
    }).then(function(httpResponse) {

      // Parse response
      var json = JSON.parse(httpResponse.buffer);

      // Array to store new objects
      var playlistsToSave = [];

      // Create playlist objects
      for (var i = 0; i < json.feed.entry.length; i++) {

        var each = json.feed.entry[i];

        var name = each["gsx$name"]["$t"];
        var playlistid = each["gsx$playlistid"]["$t"];
        var description = each["gsx$description"]["$t"];
        var imageurl = each["gsx$imageurl"]["$t"];
        var categories = each["gsx$categories"]["$t"].split(','); 


        // -- Logs
        console.log('name = ' + name);
        console.log('playlistid = ' + playlistid);
        console.log('description = ' + description);
        console.log('imageurl = ' + imageurl);


        // Create Parse objects 
        var Playlist = Parse.Object.extend("Playlist");
        var playlist = new Playlist();
        playlist.set("name", name);
        playlist.set("playlistid", playlistid);
        playlist.set("description", description);
        playlist.set("imageurl", imageurl);
        playlist.set("categories", categories);

        // -- Logs
        console.log(playlist.playlistid);

        // Add to caching array
        playlistsToSave.push(playlist);



      }


console.log('playlistsToSave = ');
console.log(playlistsToSave);


      // Parse - Save objects
      Parse.Object.saveAll(playlistsToSave, {
        success: function(saveList) {
            status.success("Objects created successfully.");
        },
        error: function(error) {
            status.error("Unable to save objects.");
        }
      });


    },function(httpResponse) {
      // error
      console.error('Request failed with response code ' + httpResponse.status);

      status.error("Scheduled messages error: " + error);
    });

});

JSON返回正常。问题是,当我尝试创建新的Parse对象时,它们似乎没有被创建。

注销:

代码语言:javascript
代码运行次数:0
运行
复制
    console.log(playlist.playlistid);

返回:

代码语言:javascript
代码运行次数:0
运行
复制
I2015-06-11T06:11:21.235Z]No Message provided

另外,日志记录:

代码语言:javascript
代码运行次数:0
运行
复制
 console.log('playlistsToSave = ');
 console.log(playlistsToSave);

返回:

代码语言:javascript
代码运行次数:0
运行
复制
I2015-06-11T06:11:21.236Z]playlistsToSave = 
EN

回答 1

Stack Overflow用户

发布于 2015-06-12 00:20:04

我根据Luca的回答将日志更改为:

代码语言:javascript
代码运行次数:0
运行
复制
console.log(playlist.get("playlistid"));

它会打印出一个值,因此创建了Playlist对象并设置了这些值。还有:

代码语言:javascript
代码运行次数:0
运行
复制
console.log(playlistsToSave.length);

显示值2

有趣的是,我在执行此操作时收到一条成功消息,并将playlist对象保存到Parse。

显然,这一行:

代码语言:javascript
代码运行次数:0
运行
复制
console.log(playlistsToSave);

导致云日志中的消息出现错误:

代码语言:javascript
代码运行次数:0
运行
复制
Failed with: Uncaught Tried to save an object with a pointer to a new, unsaved object.

为什么?我不知道。因此,我的调试日志一开始就是错误的,并使我退出,但尝试注销该数组也会导致异常。我来自objective-c背景,所以注销这样的数组将打印数组对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30773046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档