增加价值+;在CoffeeScript中的for循环中为1?
我试过这个:增加价值+;在CoffeeScript中的for循环中为1?,coffeescript,Coffeescript,我试过这个: 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进行评估(而不是引用)。从: 当使用JavaScript循环生成函数时,通常会插入一个闭包
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
进行评估(而不是引用)。从:
当使用JavaScript循环生成函数时,通常会插入一个闭包包装器,以确保循环变量被关闭,并且所有生成的函数不只是共享最终值。CoffeeScript提供do
关键字,该关键字立即调用传递的函数,转发任何参数
这正是你面临的情况。您还可以让CoffeeScript通过使用for
for的for e,i in…
形式来处理循环计数器:
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。