如何在流星上创建默认用户?

问题描述:

如果没有用户存在,我想创建一个管理员用户。我试了一下在服务器上的文件夹如何在流星上创建默认用户?

Meteor.startup(function() { 
    if(!Meteor.users.find().count()) { 
    var options = { 
     username: 'admin', 
     password: 'default-password', 
     email: '[email protected]' 
    }; 
    Accounts.createUser(options); 
    } 
}); 

这里面一个js文件是错误的流星显示控制台

Error 
    at app/packages/livedata/livedata_common.js:143:26 
    at /Users/camilo/Documents/Proyectos/IM/interno/.meteor/local/build/server/server.js:282:7 
    at Array.forEach (native) 
    at Function._.each._.forEach (/Users/camilo/.meteorite/meteors/meteor/meteor/0ffea1c4c308ed24906984f99b13b8fca5a0956c/dev_bundle/lib/node_modules/underscore/underscore.js:79:11) 
    at run (/Users/camilo/Documents/Proyectos/IM/interno/.meteor/local/build/server/server.js:227:7) 
=> Exited with code: 1 

我做错了或这是一个错误的流星吗?

我使用流星0.6.1和0.9.9的Node.js

+0

还有一个类似的问题http://stackoverflow.com/questions/11629759/how-can-i-create-users-server-side在流星,但并没有解决这个问题。 – Camilo 2013-04-10 21:10:48

+0

您是否拥有accounts-password和accounts-base软件包? – Akshat 2013-04-10 21:21:58

+0

是的。我可以从客户端,登录,注销等创建用户。 – Camilo 2013-04-10 22:01:05

一段时间后,我再次测试上面的代码与流星0.6.4和它的工作没有问题。可能是流星0.6.1的一个问题,或者我意外地在代码的某个地方解决了这个问题。

这种方式为我工作:

var users=[ 
    {email: "[email protected]", username: "gra", name: "gra", roles:['admin']} 
]; 
_.each(users, function(user){ 
    Accounts.createUser({ 
     email: user.email, 
     password: "admin", 
     profile: {username: user.username}, 
     profile: {name: user.name}, 
     roles: user.roles 
    }); 
}); 
+0

我得到了与您的代码相同的错误。你把它放在服务器或客户端? – Camilo 2013-04-11 14:02:36

+0

我放在服务器端 – lfergon 2013-04-11 16:58:13

我从来没有发现任何问题,创造对流星的用户。 这是我的CoffeeScript代码:

Meteor.startup -> 
    if Meteor.users.find.count() is 0 
    options = 
     email: '[email protected]' 
     password: 'pass' 
    Accounts.createUser(options) 

我会建议一个/server/fixtures.js文件。在这个文件中,你可以添加你的默认用户创建:

if (Meteor.users.find().count() === 0) { 
    Accounts.createUser({ 
     username: 'username', 
     email: 'email', 
     password: 'asdfasdf', 
     profile: { 
      first_name: 'fname', 
      last_name: 'lname', 
      company: 'company', 
     } 
    }); 
} 
+2

这段代码每次运行Meteor时都会运行至少一次?潜在的每个线程一次?我想它想包裹在Meteor.startup()调用中,因为我不认为'fixtures.js'作为文件名具有任何特殊意义。 – chmac 2014-11-28 15:47:08

+2

是的,每次启动时都会运行。包裹在Meteor.startup()中不会受到伤害,并且可以提供一些防止意外运行的保险,我想。不,文件名fixtures.js没有意义。我想我可能从Discover Meteor书中得到了这个名字? – SpacePope 2015-09-09 19:14:48