LoginSignup
4

More than 5 years have passed since last update.

MilkcocoaをPromiseでよりDB的に使う

Last updated at Posted at 2015-11-14

元ネタ

[milkcocoa] milkcocoa コネクションを切断する方法
http://qiita.com/simiraaaa/items/fa21870be7f8e6fc7639

@printf_moriken さんがツイートで

データベース的に使いたかったら、Promise で囲っといたほうがよさそう。
https://twitter.com/printf_moriken/status/658666233210912768

とおっしゃってたのを見て、できるか試してみた。

検証のしかた

  • Milkcocoaインスタンス生成~データ取得部分をPromiseで囲う
  • getでid指定してデータ取得
  • コネクションがget時だけになるか(get前後のコネクション数をダッシュボードで確認)

コード

index.html
<!DOCTYPE html>
<html lang="ja">

<head>
    <meta charset="UTF-8">
    <title>DB的に使うサンプル</title>
</head>

<body>
    <script src="https://cdn.mlkcca.com/v2.0.0/milkcocoa.js"></script>
    <script src="index.js"></script>
</body>

</html>
index.js
function getData(id) {
    return new Promise(function (resolve, reject) {
        var mk = new MilkCocoa('{YOUR-APP-ID}.mlkcca.com');
        mk.onConnected(function () {

            // データ取得
            var ds = mk.dataStore("chat");
            ds.get(id, function (err, datum) {
                mk.disconnect();
                resolve(datum);
            });
        })
    })
}

getData("ifezvqhgRyS87ba").then(function (data) {
    //データを使う
    console.log(data);
});

結果

指定したidのデータがJSONで返ってきました。つまり通常のds.getと同じ動きをしました。
コネクションもちゃんと切れてました。

まとめとか注意とか

Milkcocoaのインスタンス生成~各処理をPromiseで囲うことでDB的に使うことができそうというのがわかりました。コネクションを通信時のみに限定することで制限をかいくぐることができそうです。
ただこのやり方はインスタンスを生成してコネクション張るのにかかるコストとかがどうなのかわからないので、Milkcocoaもともとのきびきびしたデータのやり取りができるかは不明です。
また、そもそもプランの制限を超える不正さもあるやり方ですので、使う際は自己責任でお願いします。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4