FJCT_ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

React Native用SDKがデータストアの検索、更新に対応しました

f:id:mbaasdevrel:20180306160753p:plain

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)に感謝します!

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。