2017-05-24 26 views
0

繼文檔,我在我的JS使用此:如何使用Zapier的StoreClient設置和檢索單個值?

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

變量status從未有一個值。我顯然沒有正確使用該庫。

對於上下文來說,這是在switch語句中,對於許多情況下這樣做的情況,其中一些情況需要設置或從StoreClient獲取值。

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組合成一個的例子。

我嘗試這樣做:

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

來自Zapier平臺團隊的David在這裏。

對不起,在文檔中的混淆。我會給你一個關於如何解決你的代碼的快速答案,以及爲什麼要解決這個問題。同時,我會記下更新的文檔更多的例子。

兩件大事:

A.承諾選擇任何在最後函數返回。如果你不帶他們,他們會迷路。您的代碼應閱讀:

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

B.你需要提供一個值的callback第二個參數。有一個更好的例子here

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

下面是一些關於如何使所有Zapier代碼工作的高度細節問題的。

回調

您的代碼AWS LAMBDA,它總是需要當您完成知道內部運行。它用特定的參數集在一個特殊的函數中執行你所有的代碼。這裏相關的是callback,這是一個當你準備退出(或發生錯誤)時可以調用的函數。你可以閱讀更多關於該設置here

與大多數節點回調一樣,callback具有功能簽名callback (error, result)。要拋出一個錯誤,你傳遞的東西在第一現場:

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

將結果傳遞,使用第二個(沒有在第一)

callback(null, {myData: 4}); 

所以,不傳遞任何有原因zap結果沒有看到任何數據。

承諾

一般情況下,回調吸令人困惑的工作,所以我們設計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'兩次,它使用'.then(outCount => callback [更好的樣式](https://stackoverflow.com/q/24662289/1048572) (null,{'the count':outCount}),err =>回調(err))''。 – Bergi

相關問題