NIFCLOUD-mbaas / UserCommunity

ニフクラ mobile backend ユーザーコミュニティ
https://mbaas.nifcloud.com/
82 stars 18 forks source link

データストアのデータ更新について #86

Open T1002 opened 9 years ago

T1002 commented 9 years ago

既にデータストアに登録してあるデータに対して、Androidアプリ上から更新処理(update)のような事は出来るのでしょうか? SDKガイドを参考にしてみたのですが、新しいレコードとして追加(Insert)されてしまいました。 データストアの概念がよくわかっておらず設定ミスかもしれませんが、 押さえるべきポイントなどありましたらご教授下さい。

thuydg commented 9 years ago

できますよ! 更新するときに、オブジェクトにはobjectIdが含む必要があるんです! objectIdを指定して、更新するか、queryを使って、オブジェクト取得して更新するか やってみてはいかがですか?

T1002 commented 9 years ago

thuydg様

ご回答ありがとうございます。 objectIdを指定してみたのですが、更新されなくなってしまいました。 SDKガイドのオブジェクト操作→オブジェクトの更新の手順にobjectIdの指定を追加するという意味では ないのでしょうか? また、下記ソースの見方として、前半で既存データの指定、done内で更新項目の指定という意味で合っていますでしょうか?

final NCMBObject gameScore = new NCMBObject("GameScore"); gameScore.put("objectId", "abcdefg123"); ←追加箇所 gameScore.put("score", 1337); gameScore.put("playerName", "Sean Plott"); gameScore.put("cheatMode", false); gameScore.put("skills", Arrays.asList("pwnage", "flying")); gameScore.saveInBackground(new SaveCallback() { @Override public void done(NCMBException e) { gameScore.put("score", 1338); gameScore.put("cheatMode", true); gameScore.saveInBackground(); } });

お手数をお掛けして申し訳ありませんが、簡単でもよいのでサンプルソースなどをご提示頂けないでしょうか? queryを使ってオブジェクト取得して更新する方法もできればご教授頂ければ嬉しいです。 宜しくお願い致します。

thuydg commented 9 years ago

gameScore.put("objectId", "abcdefg123"); ではないですね、サンプルコードは以下見てみてくださいね!

final NCMBObject gameScore = new NCMBObject("GameScore1205"); gameScore.setObjectId("c73ybO255**"); gameScore.put("score", 8000); gameScore.put("playerName", "Sean Plott"); gameScore.put("cheatMode", false); gameScore.put("skills", Arrays.asList("pwnage", "flying")); gameScore.saveInBackground(new SaveCallback() { @Override public void done(NCMBException e) {
} });

T1002 commented 9 years ago

thuydg様

サンプルソースのご提供ありがとうございます。 なるほど、こうやって指定するんですね。 全然見当違いですみません…

ちなみにお陰様でqueryを使った方法は何とか実現できました。 これもヒントを頂かなかったら実現できなかったと思います。 本当にありがとうございました。

thuydg commented 9 years ago

良かったですね!! 開発、お互いがんばりましょう!