2016-07-26 153 views
-2

請解釋這個JavaScript語言結構:JavaScript參數映射()函數

cursor => cursor.map(doc => doc._key) 

在這種情況下

collection.all().then(
    cursor => cursor.map(doc => doc._key) // this line 
).then(
    keys => console.log('All keys:', keys.join(', ')), 
    err => console.error('Failed to fetch all documents:', err) 
); 

不瞭解doc => doc._key作爲參數傳遞給map()功能。爲什麼它不適用於doc => { key: doc._key, name: doc.name}

+1

看看術語箭頭功能,這將回答你的問題。 – Christos

+0

謝謝Christos。我今天花了兩個小時搜索,不知道他們被稱爲箭頭函數。 –

回答

1

讓我們按行劃分: 也有一些documentation on arrow functions

collection.all() 

// give me all the documents in the collection 

.then(

    cursor 

// take a cursor, which goes over each item in the collection 

=> 

// you can think of this as "take the cursor as input into an anonymous function, and return..." 

cursor.map(

// a map over the cursors output 

doc => doc._key) 

// each document the cursor finds, return the documents key 

).then(

    keys => console.log('All keys:', keys.join(', ')), 

// take the resulting keys, and console log their value 

    err => console.error('Failed to fetch all documents:', err) 

// if there are any errors, please log those as well. 
); 
+0

非常感謝Patrick,很好的回答。現在我可能最終會重構很多代碼:)) –

+0

當然!沒問題。儘管如此,請小心閱讀文檔。有一些主要的問題,包括兼容性,以及上下文中「this」的含義。除此之外,這是一個非常令人敬畏的IMO語法。 –

+0

是的,先生,確實如此。看起來我不得不再花幾天的時間閱讀,然後才跳入node.js。 –