【问题标题】:Import test-users into Meteor app with use of npm script?使用 npm 脚本将测试用户导入 Meteor 应用程序?
【发布时间】:2018-11-03 18:20:33
【问题描述】:

我们可以像这样从流星外壳轻松创建用户

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

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

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

谢谢。

【问题讨论】:

  • 您在执行 npm 脚本时遇到问题吗?
  • 我无法弄清楚如何通过 npm 脚本调用 UsersFixtures.js?它会像“node UsersFixtures.js”一样吗?
  • 用例是什么?开发?测试?产品?为什么特别是 npm 脚本?
  • @ghybs 开发。目的是在流星运行时在旅途中添加数据。还可以选择是否添加测试数据。还有其他选择吗?

标签: mongodb meteor meteor-accounts


【解决方案1】:

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

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

很遗憾,您的应用源文件(如您的 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 项目 (meteor run),在浏览器中访问你的应用,打开浏览器控制台,然后直接从那里调用方法:

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

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

【讨论】:

    猜你喜欢
    • 2016-04-18
    • 1970-01-01
    • 2017-10-22
    • 2015-05-22
    • 1970-01-01
    • 2017-11-24
    • 2014-03-26
    • 1970-01-01
    • 2022-01-17
    相关资源
    最近更新 更多