2017-08-06 16 views
0

私は初心者です。私は問題を思いつきました。私はAsyncStorageを使用してデバイスにデータを格納することができました。問題は、ラッパーでreadメソッドを呼び出すと、待機中のすべてをログに記録するので、データがそこにあることがわかります。しかし、POSTリクエストを行うためにそれを使用すると、私が相手側に取得するデータは、私が保存したものとはまったく関係ありません。 AsyncStorageで保存されたデータを取得できません

import React, { Component } from 'react'; 
 
import { 
 
    AsyncStorage, 
 
} from 'react-native'; 
 

 
module.exports = { 
 
    save: async function(key, data){ 
 
    //console.log(save key:${key} data:${data} stringify:${JSON.stringify(data)}); 
 
    try { 
 
     await AsyncStorage.setItem(key, JSON.stringify(data)); 
 
     console.log('### STORAGE - Save: Saved key: ' + key + ' with data ' + data) 
 
     return true; 
 
    } catch(err) { 
 
     console.log('### STORAGE - Save: ERROR SAVING ' + key + ':' + data); 
 
     return false; 
 
    } 
 
    }, 
 
    read: async function(key) { 
 
    console.log('### STORAGE - Reading key: ' + key); 
 
    try { 
 
     var data = await AsyncStorage.getItem(key); 
 
     if (data !== null){ 
 
     console.log('### STORAGE - Read result: ' + typeof(JSON.parse(data)) + ' : ' + JSON.parse(data)); 
 
     return JSON.parse(data); 
 
     }else { 
 
     console.log("### STORAGE - Storage.read(): Not found"); 
 
     return false; 
 
     } 
 
    } catch (err) { 
 
     console.log('### STORAGE - Storage.read(): error: ' + err.message); 
 
     return false; 
 
    } 
 
    }, 
 
    empty: function(key){ 
 
    try { 
 
     AsyncStorage.setItem(key, ''); 
 
     //console.log(Storage.empty: cleaning key ${key}); 
 
     return true; 
 
    } catch(err) { 
 
     //console.log(Storage.empty: ERROR ${err}); 
 
     return false; 
 
    } 
 
    } 
 
}

<オール= "2開始:ここで私はデータを保存して読み取るために使用しているラッパーだ

  1. :ここ

    は君たちのためにいくつかのコードです">
  2. データを取得するために使用している関数は次のとおりです。
  3. 012今

    _onPressButtonGET() { 
     
        var usuario = storage.read('lastname'); 
     
        return fetch("http://<my api>", { 
     
         method: "POST", 
     
         headers: { 
     
         'Accept': 'application/json', 
     
         'Content-Type': 'application/json', 
     
         }, 
     
         body: JSON.stringify({ 
     
         username: usuario, 
     
         lastname: 'yourOtherValue', 
     
         cellphone: 'cellphone', 
     
         parse: 'parse', 
     
         }) 
     
        }) 
     
        .then((response) => response.json()) 
     
        .then((responseJson) => { 
     
         console.log(responseJson) 
     
         Alert.alert(
     
          "GET Response", 
     
          "EMERGENCY " + JSON.stringify(responseJson['EMERGENCY']) 
     
        ) 
     
        }) 
     
        .catch((error) => { 
     
         console.error(error); 
     
        }); 
     
        } 
     
    }

    私は、ストレージラッパーからログを見ると、私は次を得る:

    I/ReactNativeJS(15760): ### STORAGE - Reading key: username 
    I/ReactNativeJS(15760): ### STORAGE - Read result: string : Federico 
    

    これはデータがあることを、意味!! =)

    しかし、私はちょうど回復値を持つPOSTリクエストを作るとき、これは私がAPIログに取得されるものです:

    BODY: {u'username': {u'_40': 0, u'_72': None, u'_55': None, u'_65': 0}, 
    

    私はちょうど私が間違ってやっているかを見ることができません。それは約束ですか?そうなら、誰かがどのように処理すべきかについての詳細な例を挙げることができますか?このことについて申し訳ありませんが、私はしばらくの間、これにこだわっている今=(

答えて

3

あなたのメソッドは非同期である「読む」、のいずれか、値を読み取るには。ボンネットの下に

read: async function(key) { 
    // ... 
}, 

を約束を返す約束のためのawait解決、または.then Sを使用しています。

async _onPressButtonGET() { 
    var usuario = await storage.read('lastname'); 
    // ... 
} 
+1

する私はあなたのこと!!このasyncronicプログラミングは私にとって新しいものである...しかし、私は学んだ!おかげで再びあなたの助けてくれてありがとう!!ビール男を借りて。 –

+0

それは答えを受け入れるのに十分です;) – Andreyco

関連する問題