React Nativeからもニフクラ mobile backendが使えるようにSDKを開発中です。前回はデータストアの保存に対応しましたが、今回は検索や更新にも対応しました。削除もできるのですが、React Native側で不具合があるようです。
使い方
初期化は次のように行います。JavaScript SDKと同じ方式です。
import NCMB from 'react-native-ncmb'; const applicationKey = 'YOUR_APPLICATION_KEY'; const clientKey = 'YOUR_CLIENT_KEY'; const ncmb = new NCMB(applicationKey, clientKey);
データストアのクラスを作成
次にクラスの作成です。これもJavaScript SDKと同じ形にしています。
const Item = ncmb.DataStore('ReactNative');
データの検索
データストアの検索はJavaScript SDKと合わせています。現在は以下のオペランドに対応しています。これもJavaScript SDKに合わせています。
- equalTo
- notEqualTo
- lessThan
- lessThanOrEqualTo
- greaterThan
- greaterThanOrEqualTo
- in
- notIn
- exists
- regularExpressionTo
- inArray
- notInArray
- allInArray
検索の実行例です。返ってくるのは DataStoreItem の配列です。
Item .in('msg', ['Hello World']) .limit(2) .fetchAll() .then((ary) => { console.log(ary) })
データの更新
データの更新はupdateメソッドで行います。以下はデータの登録、更新、削除を行う流れです。
const item = Item.item(); item .set('msg', 'Hello World') .set('test', 'Hoge') .save() .then((data) => { return data .set('newData', 'Yes!') .update(); }) .then((data) => { return item.delete() }, (err) => { console.log('err', err); }) .then((status) => { console.log('status', status) })
なお、削除を行うと Invalid response for blob
エラーが発生します。これは[0.54 - iOS] fetch HEAD requests fail with Invalid response for blob
· Issue #18223 · facebook/react-nativeにあるのと同様で、mBaaSから空文字列が返ってくるのが原因かも知れません。
まとめ
React Native用のSDKは今のところ認証とデータストアの操作に対応しています。今後、ACLやファイルストア、位置情報検索、プッシュ通知などに対応していく予定です。
コードは NCMBMania/react-native-ncmb: Use Nifty mobile backend 's REST API to correspond to React Native にあります。機能要望があればIssueまでお寄せください。オリジナルを開発したsatsuki0221 (yugo)に感謝します!