繁体   English   中英

流星:使用for循环插入集合中仅插入第一个循环

[英]Meteor: inserting in collection using for loop only inserts first loop

我只是在学习流星(一般情况下很好的开发),并且试图在服务器端使用简单的for循环插入集合中

getFriendsData: function() {   
    for (i=0; i<10; i+=1){
        console.log (i)
        Friendlist.insert({
            name: "test"+i,
            "userid": Meteor.user()._id
        })
    }

由于某种原因,这只会给我一个结果(第一个test0)。 日志显示整个循环正在运行,但是只有一个插入。 有人可以解释这里发生了什么吗? 提前致谢

您的代码看起来还不错,您如何断言它没有按预期执行操作?

这是对您的代码的重写,当在我的机器上测试时,该代码运行良好:

lib / collections / friendlist.js:

Friendlist=new Meteor.Collection("friendlist");

server / server.js:

Meteor.methods({
  getFriendsData:function(){
    if(!this.userId){
      throw new Meteor.Error(500,"Must be signed in to get friends data !");
    }
    for(var i=0;i<10;i++){
      console.log(i);
      Friendlist.insert({
        name:"test"+i,
        userId:this.userId
      });
    }
    Friendlist.find().forEach(function(name){
      console.log(friend.name);
    });
  }
});

Meteor.startup(function(){
  // for testing purpose : always reset data on startup
  Friendlist.remove({});
});

然后您是Meteor.call("getFriendsData"); 在浏览器控制台和服务器控制台中,您会看到Friendlist的10个文档按原样打印。

如果未删除autopublish程序包,则可以在浏览器控制台中键入Friendlist.find().fetch()来检查是否正确插入了10个文档。

如果仍然不起作用,请显示更多可能有副作用的代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM