2016-09-30 6 views
0

私は、ボタンをクリックするとデータベース(パースサーバー、主人公でホストされている)のエントリを更新するアプリケーションをコーディングしています。それは2つのことを保存します。ユーザーのオブジェクトID(各ユーザーに固有のもの)とオブジェクト(ユーザーがクリックしたもの)のオブジェクトID(各オブジェクトに一意)。それはほぼそのように行われます:迅速な反復から追加されたときに、パーズサーバーのエントリを一意に保つにはどうすればいいですか?

@IBAction func goButton(_ sender: AnyObject) { 


     let goingSelection = PFObject(className: "GoingTo") 
     goingSelection["userGoingID"] = (PFUser.current()?.objectId)! as String 
     goingSelection["objectID"] = objectIDLabel.text 
     goingToEventSelection.saveInBackground() 

    } 

DBのデータを追加するには問題ありません。しかし、同じuserId/objectIdのペアリング(これは新しいオブジェクトとして追加される(2つのtを区別するため)ために複数回実行できます)、このオブジェクトは独自のobjecttIdを持ちます。したがって、同じuserId/objectIdは、クリックごとに異なるobjecttIdに保存されます。私はDBの追加をuserId/objectIdペアリングのために排他的にしたいと思います。これを行うためにとにかくありますか?

+0

は、独自のユニークIDを維持し、言うことができます主キーはuserId/objectIdではありません。ユーザーがuserIf/objectIdを使用してローカルの最後のプライマリキー値の取得/読み取りをクリックするたびにインクリメントして新しいオブジェクトを作成します。 –

+0

またはlastButtonClickedというUserクラスにフィールド(列)を作成し、ボタンの識別子を 'PFUser.current()![" lasButtonClicked "] =" whatever name "' ...とするだけで保存できます –

答えて

1

あなたが例えば、あなたのGoingToクラスに自分でbeforeSaveフック内でこの検証サーバーサイドの処理する必要があります。

Parse.Cloud.beforeSave("GoingTo", function(request, response) 
{ 
    var goingTo = request.object 
    // Create a query matching object you are trying to create 
    var alreadyExistingQuery = Parse.Query... 
    alreadyExistingQuery.equalTo ... 
    return alreadyExistingQuery.first().then(function(alreadyExistingObject){ 
     if(alreadyExistingObject == null) 
      response.success() 
     else 
      response.error("This object already exists") 
    }) 
}); 

(可能性のあるタイプミスのエラーを、頭からこれを書いて)

関連する問題