有时会保存带字节数组列的parse对象,但不能正确保存字节数组

时间:2014-05-05 06:51:45

标签: android parse-platform

我正在使用此代码:

ParseObject newPObject = new ParseObject("animals");

newPObject.put("name", "dog");

newPObject.put("sound", soundAsByteArray);

try {

    newPObject.save();


} catch (ParseException e) {


}

98%的时间一切都保存得很好,我可以在解析数据浏览器中完美地获取文件,但有2%的时间我收到此错误:

<Error><Code> AccessDenied</Code> <Message>Access Denied</Message> <RequestId>****</RequestId> <HostId></HostId> </Error>

保存对象时没有任何异常,对象本身出现在数据浏览器中。

1 个答案:

答案 0 :(得分:0)

所以在没有得到解析团队的任何帮助之后我决定把事情掌握在自己手中,这就是我所做的:

  1. 在对象中添加了一个名为byteArrayLength
  2. 的数字列
  3. 使用此代码在云代码中定义一个保存功能:

    var animal = request.object;
    
    var bytesArrayLength = animal.get("byteArrayLength");
    var sound = animal.get("sound");
    
    Parse.Cloud.httpRequest({
        url: sound.url(),
        success: function(fileResponse) {
    
          if (bytesArrayLength == fileResponse.buffer.length) {
    
            // Checked out - Continue with save
    
            response.success(); // Continue to the after save
    
          }
          else {
    
            // Something bad happened and we need to save the animal again
    
            response.error("Bytes length is not equals to the real length, need to re-upload sound");
    
          }
    
        },
        error: function(error) {
            response.error(error);
        }
    });
    
  4. 在客户端代码中,我捕获异常并重试上传
  5. 像魅力一样。