繁体   English   中英

如何在Parse(JavaScript SDK)中更新User对象?

[英]How can I update the User object in Parse (JavaScript SDK)?

我有以下视图,该视图提交包含要更新为当前用户的数据的表单:

EditMyProfileView = Parse.View.extend({
        template: Handlebars.compile($('#edit-my-profile-tpl').html()),
        events: {
            'submit .profile-details-edit': 'submit'
        },
        submit: function(e){
            e.preventDefault();

            var form = document.getElementById("profile-details-edit");

            var FullName = form.FullName.value;
            var bio = form.bio.value;

            user = Parse.User.current();
            user.set("FullName", FullName);
            user.set("bio", bio);
            form.submit();
            user.save();

        },
        render: function(){
            var attributes = this.model.toJSON();
            this.$el.html(this.template(attributes));
        }
    }),

这是提交数据的表单:

           <form class="profile-details-edit" id="profile-details-edit" role="form">
                <p><label for="FullName"><b>Full Name</b></label><br><input type="text" id="FullName" name="FullName" maxLength="20" class="form-control" placeholder="{{FullName}}" autofocus="" style="padding: 19px; border: solid 2px #000; resize: none; font-family: Roboto; font-weight: 400; font-size: 16px; vertical-align: top;"></p>
                <p><label for="bio"><b>About Me</b></label><br><textarea type="text" id="bio" name="bio" class="form-control" autofocus="" style="padding: 19px; border: solid 2px #000; resize: none; font-family: Roboto; font-weight: 400; font-size: 16px; height: 200px; vertical-align: top;" maxLength="288">{{bio}}</textarea></p>
                <p><button class="button" type="submit">Submit Changes</button></p>
            </form>

我知道表单或JQuery没什么问题,因为我以前在类似情况下使用过它。

那为什么我不能更新用户数据? 似乎很简单。 我认为这与某种我不知道的安全功能有关。 有人有什么想法吗?

这是我更新的“编辑个人资料”视图。 我通过反复试验解决了这个问题,但是我仍然不知道为什么现在可以解决这个问题。 我是JavaScript的新手,但它似乎与Parse如何异步更新User对象有关。 我添加了一个Promise,以便可以将Submit函数指定为首选回调:

EditMyProfileView = Parse.View.extend({
    template: Handlebars.compile($('#edit-my-profile-tpl').html()),
    events: {
        'submit .profile-details-edit': 'submit'
    },
    submit: function(e){
        e.preventDefault();

    var form = document.getElementById("profile-details-edit");

    user = Parse.User.current();
    user.save().then(function() {
        var FullName = form.FullName.value;
        var bio = form.bio.value;
        user.set("FullName", FullName);
        user.set("bio", bio);
        form.submit();
        user.save();
    }, function(error) {

    });

},

如果有人可以确切指定这两种方法之间的区别,以及为什么后一种方法可以工作而前一种方法却不能工作,那将不胜感激!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM