解析云代码全部保存

Posted

技术标签:

【中文标题】解析云代码全部保存【英文标题】:Parse Cloud Code Save All 【发布时间】:2015-07-13 05:22:01 【问题描述】:

所以我的 Parse Core 中有一个大约 200 行的列表。我正在尝试创建一个贯穿整个列表并将push 的整个列更改为0 的作业。我正在尝试使用此代码:

Parse.Cloud.job("SetPush", function(request, response) 
                   //take in JSON with dict

                   var newts = new Array();

                   for ( var i = 0; i < request.params.push.length; i++ )
                   
                   //add these entries to db
                   var DataClass = Parse.Object.extend("AllTeams");
                   var dataupdate = new DataClass();

                   var origdata = request.params.datalist[i];
                   dataupdate.set("push", "0");

                   newts[i]=dataupdate; //add another item to list

                   

                   Parse.Object.saveAll(newts,
                                        success: function(list) 
                                        // All the objects were saved.
                                        response.success("ok " );  //saveAll is now finished and we can properly exit with confidence :-)
                                        ,
                                        error: function(error) 
                                        // An error occurred while saving one of the objects.
                                        response.error("failure on saving list ");
                                        ,
                                        );

                   //default body does not do  response.success or response.error 

                   );

如您所见,我的班级是SetPush,我想一直更新push 列。我认为问题在于:

for ( var i = 0; i < request.params.push.length; i++ )

当我在云代码中运行此代码时,它返回此错误:

'TypeError: Cannot read property 'length' of undefined at main.js:43:60'

我做错了什么?谢谢

【问题讨论】:

亲爱的尼古拉斯;我有问题。推送是根据请求提供的列表吗? (你从请求参数调用 push)? @kingspeech 老实说,我不知道推送应该是什么。那就是错了哈哈! 亲爱的 Nicholas;从你的帖子中,我可以收集到这样的信息; post 必须是一种列表,其属性长度必须有效。只需检查您触发云功能的位置,这样您就可以看到您提供给请求的参数。希望这会有所帮助。问候。 【参考方案1】:

.length 未定义,因为 request.params.push 是一个对象。看起来您想使用输入参数 request.params.push 遍历您传递给此云函数的列表,如果/假设调用者将有效 JSON 作为“推送”传递,那么您可以执行类似这样的操作

Parse.Cloud.job("SetPush", function(request, response)                     
//take in JSON with dict         
var parsedJson = JSON.parse( request.params.push );                         
var newts = new Array();                     
for ( var i = 0; i < parsedJson.length; i++ )                    
                    
//add these entries to db                    
var DataClass = Parse.Object.extend("AllTeams");                    
var dataupdate = new DataClass();                     
var origdata = request.params.datalist[i];                    
dataupdate.set("push", "0");                     
newts[i]=dataupdate; //add another item to list                     
                     

Parse.Object.saveAll(newts,                                         
success: function(list)                                          
// All the objects were saved.                                         
response.success("ok " );  
//saveAll is now finished and we can properly exit with confidence :-)                                         
,                                         
error: function(error)                                          
// An error occurred while saving one of the objects.                                         
response.error("failure on saving list ");                                         
,                                         
);                     //default body does not do  response.success or response.error                      
);

【讨论】:

以上是关于解析云代码全部保存的主要内容,如果未能解决你的问题,请参考以下文章

解析云代码之前保存未在更新时运行

解析 Javascript API 云代码 afterSave 并访问 beforeSave 值

解析云代码 GeoPoint

解析从云代码向特定用户发送推送通知

云代码后保存方法不起作用

解析云代码 request.object.get(key) 总是返回 undefined