0

私は一意のレコードを必要としますが、 'saveinbackground'のためにクライアント上の単純なfind()がその仕事をしませんでした。 bSavingInbackGroundのようなブーリアンを追加して設定しても、それがtrueの場合はアプリの重複を防ぐことができません。構文解析データベースを使用しているときに一意のキーを確保する方法

多くの(マルチユーザ)状況では、一意のキーが非常に役立つことを確認してください。

Parse CloudCodeは正しい方法ですが、適切な解決策が見つかりませんでした。

答えて

0

私は最終的にクラウドコードを使用して動作するようにいくつかのトレイルとエラーのテストを行った。他の人に役立つことを願っています。

私の 'table'はmyObjectClassであり、一意である必要があるフィールドは 'myKey'です。 これをmain.jsに追加して、サーバークラウドコードの解析をアップロードします。

Parse.Cloud.beforeSave("myObjectClass", function(request, response) { 
var myObject = request.object; 

if (myObject.isNew()){ // only check new records, else its a update 
    var query = new Parse.Query("myObjectClass"); 
    query.equalTo("MyKey",myObject.get("myKey")); 
    query.count({ 
     success:function(number){ //record found, don't save 
      //sResult = number; 
      if (number > 0){ 
       response.error("Record already exists"); 
      } else { 
       response.success(); 
      } 
     }, 
     error:function(error){ // no record found -> save 
      response.success(); 
     } 
    }) 
} else { 
    response.success(); 
} 
}); 
0

あなたのアプローチが正しいアプローチですが、パフォーマンスの観点から、私はquery.first()を使用して思うことは、それとすぐに停止しますquery.first()以来query.count()よりも高速です: 変更myObjectClassと「MYKEYは、」あなたのニーズに合わせて一致するレコードを見つけますが、query.count()はクラスレコード全体を照合して一致するレコードの数を返す必要があります。これは巨大なクラスがあればコストがかかることがあります。

関連する問題