2017-05-24 5 views
0

は、私は私のJSでこれを使用しています:ZapierのStoreClientを使用して単一の値を設定および取得するにはどうすればよいですか?ドキュメント以下

var store = StoreClient('my secret'); 
store.set('active', true); 
var status = store.get('active'); 

変数statusが値を持っていることはありません。私は明らかにライブラリを正しく使用していません。

文脈では、これは、多くの場合、何かがStoreClientから値を設定または取得する必要がある場合のような何らかの処理を行う文です(switch)。

The documentationは、この例を使用しています。

var store = StoreClient('your secret here'); 
store 
    .set('hello', 'world') 
    .then(function() { 
    return store.get('hello'); 
    }) 
    .then(function(value) { 
    // value === 'world' 
    return store.delete('hello'); 
    }) 
    .then(function() { 
    callback(); 
    }) 
    .catch(callback); 

私はアマチュアの側にだから、私は約束とスーパー慣れていませんよ。この例では、[a]を設定し、最終的には値を取得するためにはどの部分が必要なのかは不明です。私はset/get/deleteが1つに組み合わされていない例を含めることを提案します。

var store = StoreClient('my secret'); 
store 
    .set('active', true) 
    .then(function() { 
    return store.get('active'); 
    }) 
    .then(function() { 
    callback(); 
    }) 
    .catch(callback); 

...しかし、その後、私は、スクリプトの一番下にoutput変数に触れていなくても、何のoutput変数が存在しないというエラーが表示されます。

は、私はこれを試してみました。

+0

約束事で 'callback'を使うと、実際これは恐ろしい例になります。しかし、完全なコードを見ることができるように、あなたが参照しているドキュメントをリンクしてください。 – Bergi

+0

@Bergiはドキュメントリンクを追加しました –

答えて

0

ザビエルのプラットフォームチームのDavidがここにいます。

ご迷惑をおかけして申し訳ありません。私はあなたのコードを修正する方法とその理由について長い答えをあなたに与えます。その間、私は、もっと官能的な例でドキュメントを更新するためのメモを作成します。

ショート

二つの大きなもの:

A.の約束は最後の関数で返されたものは何でも選びます。あなたがそれらを連れて来なければ、彼らは失われています。あなたのコードは次のようになります。

.then(function(storedVal) { // <- that variable is missing in your code 
    console.log('stored val is', storedVal); 
}) 

B.あなたはcallbackの第2引数に価値を提供する必要があります。より良い例がhereです。ここで

.then(function(storedVal) { 
    callback(null, {active: storedVal}); 
}) 

ロング

はすべてZapierコードの仕事は素晴らしい作る方法に関する核心の一部です。

コールバック

あなたのコードは常に終了したら、知っている必要がありAWSラムダ、内部で動作します。それは特定の引数のセットを持つ特別な関数ですべてのコードを実行します。ここに関連するものはcallbackです。これは、終了する準備ができたとき(またはエラーがあるとき)に呼び出すことができる機能です。その設定について詳しくは、hereをご覧ください。

ほとんどのノードコールバックと同様に、callbackには、機能シグニチャcallback (error, result)があります。エラーをスローするには、最初の場所で何かを渡す:

callback({msg: 'thing went wrong'}); 

callback(null, {myData: 4}); 

だから、何も渡していない理由はそこにある(最初に及び何)秒を使用し、結果を渡すにはザップ結果にはデータが表示されません。

約束一般に

、コールバックは吸うとで動作するように混乱しているので、我々は約束を返すようにStoreClientを設計しました。オンラインでの約束については多くの資料がありますので、ここで詳しく説明しません。重要なことは、約束の関数から返されるものは、次の引数の引数であることです。たとえば:

Promise.resolve(1) 
    .then(function(val) { 
    // val === 1 
    return Promise.resolve(val + 1) 
    }) 
    .then(function(val) { 
    // val === 2 
    }) 

は、より実用的な例がthese docsにあります。少し物事をクリアし

var store = StoreClient('your secret here'); 
var outCount; 
store 
    .get('some counter') 
    .then(function(count) { 
    count = (count || 0) + 1; 
    outCount = count; 
    return store.set('some counter', count); 
    }) 
    .then(function() { 
    callback(null, {'the count': outCount}); 
    }) 
    .catch(callback); 

うまくいけば!

また、Pythonを試してみたい場合は、同じコードを実行できますが、はるかに簡単です(example here)。

いずれにしても、私たちが手助けすることができるものがあれば教えてください。

+0

'callback'をスローすると2回呼び出されるのを避けるため、' .then(outCount => callback)を使うのはより良いスタイルです(https://stackoverflow.com/q/24662289/1048572) (null、{'カウント:outCount})、エラー=>コールバック(エラー) '。 – Bergi

関連する問題