LoginSignup
3
3

More than 5 years have passed since last update.

milkcocoaのremoveメソッドとセキュリティルールで少しハマった件

Posted at

こんにちはLIGのエンジニアのびすけです。

milkcocoaでデータ削除するときはremoveメソッドを使います。
ドキュメントにあるように書くと以下のようになります。
ちなみに以下のコードはnode.jsです。

app.js
var MilkCocoa = require('./milkcocoa');
var milkcocoa = new MilkCocoa('https://{your-app-id}.mlkcca.com');
var dataStore = process.argv[2]; //引数にデータストア名を指定して実行

var db = milkcocoa.dataStore(dataStore);
console.log(dataStore + 'deleteing');

var count = 0;

db.query().limit(10000).done(function(data) {
    console.log(count);

    data.forEach(function(value) {
        db.remove(value.id);
        count++;
        console.log(count);
    });
});

実行するときはこんな感じです。

$ node app (データストア名)

実際に実行すると以下のようになります。

$ node milkdel.js demoDs
demoDs deleteing
connected
0
1
2
3
・
・
・
10000

セキュリティルール

上手く行かなかった例

データストアを削除したいのでremoveだけ許可にしていました。

demoDs {
 permit : remove;
 rule: true;
}

この時点で実行すると

$ node milkdel.js demoDs
demoDs deleteing
connected
(反応なし)

という感じになってつまりました苦笑

現時点では データストアをまるっと消すメソッドは無いため、queryを使って取得 -> removeで削除ループという実装になります。

demoDs {
 permit : query, remove;
 rule: true;
}

モチロンallでもok

demoDs {
 permit : all;
 rule: true;
}

でもセキュリティルールはちゃんと設定したほうが安心ですよ!

3
3
0

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
3
3