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

Cam*_*ilo 15 node.js meteor

如果没有用户,我想创建一个管理员用户.我在服务器文件夹中的js文件上尝试过它

Meteor.startup(function () {
  if(!Meteor.users.find().count()) {
    var options = {
      username: 'admin', 
      password: 'default-password', 
      email: 'admin@example.com'
    };
    Accounts.createUser(options);
  }
});
Run Code Online (Sandbox Code Playgroud)

这是流星在控制台上显示的错误

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
Run Code Online (Sandbox Code Playgroud)

我做错了什么或这是一个流星虫?

我正在使用meteor 0.6.1和node.js 0.9.9

Spa*_*ope 32

我建议使用/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',
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

  • 每次Meteor启动时,此代码至少会运行一次吗?每个线程可能一次?我想它想要包含在Meteor.startup()调用中,因为我认为`fixtures.js`作为文件名没有任何特殊意义. (2认同)
  • 是的,每次启动时都会运行.我想,包装在Meteor.startup()中不会受到伤害,并且可以防止意外运行.不,文件夹fixtures.js没有意义.我想我可能从Discover Meteor书中得到了这个名字? (2认同)

lfe*_*gon 5

这种方式对我有用:

var users=[
   {email: "dgra@gmail.com", 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
    });
});
Run Code Online (Sandbox Code Playgroud)


Cam*_*ilo 0

一段时间后,我用meteor 0.6.4再次测试了上面的代码,它工作没有问题。可能是流星 0.6.1 的问题,或者我不小心在代码中的某个地方解决了问题。