使用npm脚本将测试用户导入Meteor应用程序?

时间:2018-05-24 13:33:23

标签: mongodb meteor meteor-accounts

我们可以像这样轻松地从meteor shell创建用户

Accounts.createUser({username: 'john', password: '12345'})

同样,我只想通过npm脚本添加多个用户。有什么想法吗?

换句话说,我想通过npm命令使用fixtures功能,而不是在初始运行时使用。

谢谢。

1 个答案:

答案 0 :(得分:1)

对于普通集合(即不同于Meteor.users),您可以直接使用MongoDB集合。在项目以开发模式运行时打开Meteor Mongo shell,然后直接键入Mongo shell命令。

对于Meteor.users集合,您希望利用accounts-baseaccounts-password软件包自动管理,而不是直接摆弄MongoDB,而是希望通过Meteor应用程序插入文档/用户

很遗憾,您的应用源文件(例如UsersFixtures.js文件)绝对不适合使用CLI。

通常的解决方案是在您的应用服务器中嵌入专用方法:

// On your server.
// Make sure this Method is not available on production.
// When started with `meteor run`, NODE_ENV will be `development` unless set otherwise previously in your environment variables.
if (process.env.NODE_ENV !== 'production') {
  Meteor.methods({
    addTestUser(username, password) {
      Accounts.createUser({
        username,
        password // If you do not want to transmit the clear password even in dev environment, you can call the method with 2nd arg: {algorithm: "sha-256", digest: sha256function(password)}
      })
    }
  });
}

然后以开发模式(meteor run)启动Meteor项目,在浏览器中访问您的应用程序,打开浏览器控制台,然后直接从那里调用该方法:

Meteor.call('addTestUser', myUsername, myPassword)

您也可以直接在浏览器控制台中使用Accounts.createUser,但它会自动以新用户身份登录。