1

这有很多应用程序,但我当前的应用程序是从 Cakefile 将测试数据加载到数据库中。当我使用 mongodb 驱动程序创建文档时,它会添加一个_idof 而不是自动添加ObjectId("527d9761ae5c03ce1c000001")的字符串。我希望能够在 Meteor 上下文中运行 Cakefile,这样我就可以简单地调用而不是使用 mongodb 驱动程序。"he3KMaEwsX457ejPW"Meteor.Collection.insertCollectionName.insert

4

1 回答 1

2

这是我如何做到这一点:

蛋糕文件

{spawn} = require 'child_process'

option '-e', '--environment [ENVIRONMENT_NAME]', 'set the environment for `start`'

task 'start', 'start the server', (options) ->
  process.env.METEOR_ENV = options.environment ? 'development'
  spawn 'meteor', [], stdio: 'inherit'

现在,当我运行时cake startMETEOR_ENV变量将默认为'development'. 您可以在此处使用所需的任何字符串运行 start,例如:

cake -e production start

服务器/初始化.coffee

Meteor.startup ->
  environment = process.env.METEOR_ENV ? 'production'
  return if environment is 'production'

  insertCollections = []

  if environment is 'development'
    insertCollections = [
      insertUsers, Meteor.users
      insertGroups, Groups
    ]

  for insert, index in insertCollections by 2
    collection = insertCollections[index + 1]
    insert() if collection.find().count() is 0

在这个例子中,服务器启动后,它会查看我们所处的环境。如果是'production',则退出而不初始化数据库。如果环境是 ' development',则创建一个交替函数和集合名称的数组。然后对于每一对,仅当集合为空时才调用该函数。在这种情况下,您需要在其他地方定义insertUsersinsertGroups

我喜欢这种设置,因为它会在每个meteor reset.

于 2013-11-09T16:34:58.377 回答