javascript - 解析云代码-修改所有PFUsers

标签 javascript parse-platform cloud pfuser

我正在尝试创建一个云作业,该作业获取用户的全名或用户名并将其以小写形式保存在另一列中。这是我到目前为止所拥有的:

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/

按照上述脚本的工作方式,您将在并行中使用 Promise,而不是在系列中:https://parse.com/docs/js/guide#promises

关于javascript - 解析云代码-修改所有PFUsers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31113850/

相关文章:

android - 自定义通过解析收到的通知

ios - PFFile 和 JSON?

mysql - 查询执行速度非常慢

docker - Web容器和docker有什么区别?

javascript - 警报后重置输入值 - Javascript

javascript - 卡在 postMessage 和 MessageChannel

javascript - JavaScript 中具有挑战性的矢量数学

javascript - Async/await - 等待函数和非等待函数的组合

node.js - 解析云代码函数响应成功不是函数

hadoop - Hadoop 可以像 Dropbox 或 Google Drive 一样使用吗?