Primary Keyのようなものはございますでしょうか?

57 views
Skip to first unread message

加藤貴司

unread,
Jun 6, 2015, 6:55:24 AM6/6/15
to mlk...@googlegroups.com
担当者様 
お世話になっております.加藤と申します.
テーブルに追加された時にユニークなID(主キー Primary Key?のようなもの)を与えたいと考えております.
js側でIDを管理した場合(countNum++のようにカウントした場合),複数台接続ですと独自のIDになりませんでした.
pushされた,milkcocoaに登録された時点で,ナンバリングされる関数のようなものはございますでしょうか?
初心者ですみません.ご回答いただければ幸いです.
よろしくお願いします.

加藤

Kiyohiko Heima

unread,
Jun 6, 2015, 8:06:54 AM6/6/15
to mlk...@googlegroups.com
フロントエンドエンジニアの平間です。
質問ありがとうございます!

それぞれのデータには、pushした際にMilkcocoaが自動で固有のidを割り振っています。

以下のコードは、1番目のデータのIDをコンソールに表示する例です。

milkcocoa.dataStore('user').stream().sort('desc').next(function(err, data) {
    console.log(data[0].id);
});

また、そのidを使えばget関数でそのデータだけを取得することができます。

milkcocoa.dataStore('users').get('{id}',function(data) {
    console.log(data);
});

加藤貴司

unread,
Jun 6, 2015, 8:35:55 AM6/6/15
to mlk...@googlegroups.com
平間様

ご返信有難うございます.以下の部分の{id}のところにiaky2cm6z6z5w6aのようなidの文字列をそうにゅうするのでしょうか?
milkcocoa.dataStore('users').get('{id}',function(data) {
    console.log(data);
});
{id}と上記idの文字列を両方挿入しましたが,以下の結果になりました.
"iaky2cm6z6z5w6a": null
"{id}": not found

度々申し訳ございませんが,お教えいただければ幸いです.
よろしくお願いいたします.

加藤

Kiyohiko Heima

unread,
Jun 6, 2015, 8:41:36 AM6/6/15
to mlk...@googlegroups.com
平間です。

ドキュメントに誤りがありました。。

コールバックの第一引数はエラーが返ってくるようになっています。

以下のようなコードだと動作するかと思います。
milkcocoa.dataStore('users').get('{id}',function(err, data) { console.log(data); });

おかげさまで、ドキュメントの不備に気づくことが出来ました。ありがとうございます!
今後ともどうぞよろしくお願い致します。

加藤貴司

unread,
Jun 6, 2015, 8:50:10 AM6/6/15
to mlk...@googlegroups.com
平間様
お世話になっております.
独自idの取得が出来ました.ありがとうございます!
そのidがテーブルの何番目に挿入されたものかを取得できますでしょうか?
度々の質問申し訳ございませんが,ご回答いただければ幸いです.
よろしくお願いいたします.

加藤

部谷修平

unread,
Jun 15, 2015, 12:20:43 AM6/15/15
to mlk...@googlegroups.com
加藤様

遅くなってすみません。

開発の部谷です。

Idがテーブルの何番目に挿入されたを取得することは出来ませんが、stream APIを用いて順番にデータを取得することは出来ます。
どのようなことを実現されたいか、教えていただけると、やり方をお教えできるかもしれません。

よろしくお願い致します。

加藤貴司

unread,
Jun 15, 2015, 7:10:10 AM6/15/15
to mlk...@googlegroups.com
部谷さま

お世話になっております.加藤です.
やりたいことは以下になります.
1. 画像に連番をふってmilkcocoaに保存(base64)
2. 連番をふってpushしている最中は排他的処理を行いたい(複数接続端末からのpushを拒否)
3.連番は 1−999までのユニークな数字(本当は999以上の連番もふりたいのですが,sizeでとれるのが,999までのようですので,,,)
---
現状ですと3.に関しましてはstreamでdataのlengthをとってきて,インクリメントするという方法をとりましたが,
複数同時接続だと連番が重なってしまう結果になりました.
そこで,排他的な処理が必要かとおもいましたが,どのように行うかわからず,困っております.
ぜひご教授いただければ幸いです.
的はずれな質問かもしれませんが,何卒よろしくお願いいたします.

加藤

Kiyohiko Heima

unread,
Jun 22, 2015, 5:19:35 AM6/22/15
to mlk...@googlegroups.com
加藤様

ありがとうございます。エンジニアの平間です。

何度も質問に質問を返して大変申し訳ありませんが、
連番を振った結果、その後に何を実現したいかを教えて頂けますでしょうか...?
(例えば、pushされた順番(No.1,No.2...)と一緒に画像を表示したい、など)

平間

加藤貴司

unread,
Jun 22, 2015, 5:28:31 AM6/22/15
to mlk...@googlegroups.com
平間様

お世話になっております。加藤です。
やりたいことは以下になります。
1. 写真を連番を振って登録し、それを後で取得して、疑似アニメーションを作成したいと思っています。(gifアニメのような感じです)
2.そして複数端末接続をしていますのでpushしている最中に割り込みを防ぎたいと思っています。
3.配列で一気に複数の写真を保存したいのですが、base64に変換すると文字列が膨大になるため、1つのpushで1つの写真しか保存できないようです。(4kまでと伺いました)
4.そこで疑似アニメの順番を保つために連番を振りたいと考えています。
以上、お手数をおかけして申し訳ございませんが、よろしくお願いいたします。

加藤

Kiyohiko Heima

unread,
Jun 22, 2015, 5:37:25 AM6/22/15
to mlk...@googlegroups.com
加藤様

ありがとうございます。

実現したいこと、理解致しました。

他の端末から送られてくるデータがそれぞれ独立しているなら
端末ごとにデータストアをわければ、割り込みの心配はないと思いました。

的外れな回答であれば申し訳ありません。。

平間

加藤貴司

unread,
Jun 22, 2015, 5:45:05 AM6/22/15
to mlk...@googlegroups.com
平間様

ご回答ありがとうございます。
平間様のご回答の方法ですと、
例えば1,000人がそれぞれアニメーションを作るとすると、1,000個のデータストアが必要になりますが、
そういった使い方をしたほうがよろしいでしょうか??もしくはそれ以上になった場合など。。
初心者でたびたびの質問ですみません。
よろしくお願いいたします。

加藤

Kiyohiko Heima

unread,
Jun 22, 2015, 5:55:16 AM6/22/15
to mlk...@googlegroups.com
加藤様

ありがとうございます。

データストアの設計の方法は人それぞれなんですが、
私だったら、1,000人がアニメーションを作る状況なら、1,000個のデータストアを作成します。

また、そもそも、そこまで大量に画像を保存する場合は、
画像は別で用意した(Amazon S3などの)ファイルホスティング用のサーバーに保存して、
URL(参照方法)のみをMilkcocoa側に保存する方法が、一般的なように思います!

加藤様と認識がずれていたら大変申し訳ありませんが、
こちら、平間の個人的な回答とさせて頂きます...!

平間

加藤貴司

unread,
Jun 22, 2015, 5:57:46 AM6/22/15
to mlk...@googlegroups.com
平間様
ご回答ありがとうございます。

加藤
Reply all
Reply to author
Forward
0 new messages