我嘗試這樣做:在CoffeeScript中for循環中增加值+ 1?
posts = Posts.find({},
sort:
position: 1
).fetch()
for post in posts
i = 1
Posts.update post._id,
$set:
position: i
i++
但是,所有的帖子結了位置1。我要的是1,2,3,4,等
我做錯了嗎?
我嘗試這樣做:在CoffeeScript中for循環中增加值+ 1?
posts = Posts.find({},
sort:
position: 1
).fetch()
for post in posts
i = 1
Posts.update post._id,
$set:
position: i
i++
但是,所有的帖子結了位置1。我要的是1,2,3,4,等
我做錯了嗎?
您可以使用do
在正確的時間對i
進行評估(而非引用)。從fine manual:
當使用JavaScript的循環產生的功能,這是常見的,以便插入一個封閉的包裝,以保證循環變量被關閉了,所有生成的功能不只是共享的最終值。 CoffeeScript提供了
do
關鍵字,該關鍵字立即調用傳遞的函數,轉發任何參數。
這正是你面臨的情況。您也可以讓CoffeeScript中使用for e, i in ...
形式的for
處理循環計數器:
for post, i in posts
do (post, i) ->
Posts.update post._id,
$set:
position: i + 1
你也可以這樣做:
posts.forEach (post, i) ->
Posts.update post._id,
$set:
position: i + 1
你'I = 1'是內環路......它的設置它在每次迭代中爲1。 – dule