解析云代码-修改所有PFUsers
Parse cloud code - modifying all PFUsers
我正在尝试创建一个云作业,该作业采用用户的全名或用户名,并将其以小写形式保存在另一列中。到目前为止,我拥有的是:
Parse.Cloud.job('normaliseUsername',function(request, status) {
Parse.Cloud.useMasterKey();
var query = new Parse.Query(Parse.User);
query.find({
success: function(items){
for (var i=0;i<items.length;i++) {
var user = items[i];
console.log(user);
var changed = user["nameChanged"];
if (changed === true) {
var username = user.username;
user.set("lowerCaseName",username.toLowerCase());
} else {
var realName = user["firstName"] + " " + user["lastName"];
user.set("lowerCaseName",realName.toLowerCase());
}
user.save();
}
}
});
});
这将产生一个新的列lowerCaseName
,其中充满了undefined
。
在这种情况下,我如何访问PFUser的属性?我试过使用user.get('');
,但它说Cannot call method 'get' of undefined
这样做:
Parse.Cloud.job("normaliseUsername", function(request, status) {
Parse.Cloud.useMasterKey();
var count_user = 0;
var query = new Parse.Query(Parse.User);
query.descending('updatedAt');
query.Exist('nameChanged');
query.limit(1000);
return query.find().then(function(users) {
return Parse.Promise.when(users.map(function(user) {
count_user+= 1;
if (user.get("nameChanged")) {
user.set("canonical_firstname", user.get("username").toLowerCase());
} else {
var realName = user.get("firstname") + ' ' + user.get("lastname");
user.set("lowerCaseName", realName.toLowerCase());
}
return user.save();
}));
}).then(function() {
status.success("normaliseUsername with " + count_user + " user(s) updated.");
}, function(error) {
status.error("Uh oh, something went wrong.");
});
});
您使用for
的循环永远不会工作,您需要使用Promise
。更多信息请点击此处:http://blog.parse.com/learn/engineering/whats-so-great-about-javascript-promises/
按照上述脚本的工作方式,您将在Parallel
中使用Promise,而不是在Series中:https://parse.com/docs/js/guide#promises
相关文章:
- 在Safari执行javascript之前对其进行修改
- 从客户端获取修改后的对象,并将其与服务器上的原始对象组合
- 用Javascript修改内部标记的CSS规则
- 绑定Range输入以修改样式
- 可以从Chrome扩展修改窗口对象吗
- jQuery滚动器插件修改
- 将函数从onclick修改为onload
- jQuery UI自动完成-修改问题
- Javascript日期修改
- 如何通过JQuery修改样式属性
- 使用treewalker修改表
- Angularjs:修改js中的作用域,稍后在页面中使用
- 在编译阶段后创建新的DOM树,或者继续使用原始修改的DOM
- 修改控制器AngularJS的全局值
- 修改数据后,setState不会触发重新渲染
- 通过sdk/system/events在修改请求观测器上测试http
- GWT:有没有一种方法可以修改GWT在编译中使用的Cast.java文件
- 在多个元素上使用jquery插件,只需稍作修改
- 使用修改的键/值重新保存PFUsers
- 解析云代码-修改所有PFUsers