【问题标题】:How to create a default user on meteor?如何在流星上创建默认用户?
【发布时间】:2013-04-02 22:05:39
【问题描述】:

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

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

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

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 和 node.js 0.9.9

【问题讨论】:

  • 有一个类似的问题stackoverflow.com/questions/11629759/…但是没有解决这个问题。
  • 你有accounts-password和accounts-base包吗?
  • 是的。我可以从客户端、登录、注销等创建用户。
  • 是否有更多关于错误的数据?错误可能来自其他原因?
  • 这是我在控制台上获得的唯一信息。我将 Accounts.createUser 的响应分配给一个变量并将其传递给 console.log,但应用程序在 createUser 返回之前崩溃了。

标签: node.js meteor


【解决方案1】:

我建议使用 /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',
        }
    });
}

【讨论】:

  • 每次 Meteor 启动时,这段代码至少会运行一次,对吧?每个线程可能一次?我想它想被包裹在 Meteor.startup() 调用中,因为我认为 fixtures.js 作为文件名没有任何特殊意义。
  • 是的,这将在每次启动时运行。我想,包裹在 Meteor.startup() 中不会有任何伤害,并且可以为意外运行提供一点保险。不,文件名 fixtures.js 没有意义。我想我可能是从发现流星这本书中得到这个名字的?
【解决方案2】:

这种方式对我有用:

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
    });
});

【讨论】:

  • 我的代码出现了同样的错误。你把它放在服务器端还是客户端?
【解决方案3】:

我从未发现在 Meteor 上创建用户有任何问题。 这是我的咖啡脚本代码:

Meteor.startup ->
  if Meteor.users.find.count() is 0
    options =
      email: 'email@example.com'
      password: 'pass'
    Accounts.createUser(options)

【讨论】:

    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-15
      • 1970-01-01
      • 2021-10-07
      • 2013-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多