0

各フィールドを手動で設定するのではなく、既存の解析オブジェクトのコピーを作成し、いくつかの編集を行って新しい解析オブジェクトとして保存したいと考えています。

ここに私のクラウド関数があります:

Parse.Cloud.define("SharePost", function(request, response) {
    var ShareUserID=request.params.ShareUserID;
    var UserID=request.params.UserID;
    var PostID=request.params.PostID;
    Parse.Cloud.useMasterKey();
    var user = new Parse.User({id:UserID});
    var shareuser = new Parse.User({id:ShareUserID});
    var query = new Parse.Query("Feed");
    query.get(PostID, {
    success: function(post) {
      var Post = Parse.Object.extend("Feed");
      var newpost = new Post()
      // here I would like to get the same object and make some edits o, it
      post.save( {
            success:function () {
                 response.success("Success");
            },
            error:function (pointAward, error) {
                 response.success(error);
            }
        }
    );    
    },
    error: function(error) {
      console.error("Got an error " + error.code + " : " + error.message);
    }
  });
}); 
4

1 に答える 1

1

もっときれいな方法があるかもしれませんが、微妙な点に頼らずに確実に機能する1つの方法は次のとおりです。

function pfClone(fromObject, toObject, keys) {
    var _ = require('underscore');
    _.each(keys, function(key) {
        toObject.set(key, fromObject.get(key));
    });
}

次のように呼び出します。

// after fetching a post called "post"
var Post = Parse.Object.extend("Feed");
var newpost = new Post();
var keys = ["title", "author" /* ...the keys you want to copy unchanged */ ];
pfClone(post, newpost, keys);
// change other properties of newpost here

渡されたオブジェクトをイントロスペクトし、クローンを構築して初期化するバージョンの方がさらにきれいです。これらのアイデアのいずれかの 1 つの不適切な点は、(最後に確認したとき) PFObject ではキーをイントロスペクトできないため、キーの配列を渡さなければならないことです。

于 2016-02-11T20:29:13.027 に答える