1

ワークライト暗号化キャッシュに情報を保存するコードを書いています。50005
のように見えるローカル DB の主キーである値を暗号化しようとしています。これは数値であり 、Web プレビュー環境でプロジェクトを実行している暗号化されたキャッシュの書き込みメソッドに渡しています。 エラーは、無効な引数値 '50005'、予想される null または 'string' です。 以下はコードスニペットです


function setUserId(userId){
    WL.EncryptedCache.write("USER_ID",userId, onCompleteHandler, onErrorHandler);
    }

function onCompleteHandler(status){
        console.log("Global cache write success.");
    }

    function onErrorHandler(status){
        console.log("Global cache open error."+status);
        switch(status){
        case WL.EncryptedCache.ERROR_KEY_CREATION_IN_PROGRESS:
            console.log("ERROR: KEY CREATION IN PROGRESS");
            break;
        case WL.EncryptedCache.ERROR_LOCAL_STORAGE_NOT_SUPPORTED:
            console.log("ERROR: LOCAL STORAGE NOT SUPPORTED");
            break;
        case WL.EncryptedCache.ERROR_NO_EOC:
            console.log("ERROR: NO EOC");
            break;
        case WL.EncryptedCache.ERROR_COULD_NOT_GENERATE_KEY:
            console.log("ERROR: COULD NOT GENERATE KEY");
            break;
        case WL.EncryptedCache.ERROR_CREDENTIALS_MISMATCH:
            console.log("ERROR: CREDENTIALS MISMATCH");
            break;
        default:
            console.log("AN ERROR HAS OCCURED. STATUS :: " + status);
        }
    }
4

1 に答える 1

4

API 呼び出しを使用する前に、必ず API ドキュメントを参照してください。write のドキュメントは次のとおりです。

それは言います:

パラメーター:

値 - 必須。弦。暗号化するデータ。null に設定すると、キーは削除されます。

変化する:

WL.EncryptedCache.write("USER_ID",userId, onCompleteHandler, onErrorHandler);

に:

WL.EncryptedCache.write("USER_ID",userId.toString(), onCompleteHandler, onErrorHandler);

その API を使用してのみ文字列を格納できます。オブジェクトを保存する場合は、JSON.stringify (オブジェクトから文字列へ) とJSON.parse (文字列からオブジェクトへ) を使用する必要があります。文字列から int に変換したい場合は、次のようにparseInt関数を使用できますparseInt(userId)

または、代わりに JSONStore API を使用することもできます。Android と iOS でのみサポートされていることに注意してください (Worklight v6.2 では、WP8 と W8 でもサポートされています)。コードは次のようになります。

var collections = {
  users : {
    searchFields : {'userid' : 'integer'}
  }
};

var options = {
  password: '123'
};

WL.JSONStore.init(collections, options)
.then(function () {
  return WL.JSONStore.get('users').add({userid: 50005});
})
.then(function () {
  return WL.JSONStore.get('users').findAll();//or .find({userid: 50005})
})
.then(function (results) {
  WL.Logger.debug(results);
})
.fail(function () {
  //handle failure in any of the API calls above
});

JSONStoreのドキュメントはこちらにあります。

于 2014-06-26T18:35:36.903 に答える