CompoundJS:使用种子文件填充数据库挂起

时间:2013-10-10 22:53:17

标签: node.js mongodb seeding compoundjs

我正在尝试使用种子文件填充我的CompoundJS应用程序的Mongo数据库,但每当我运行compound seed时,终端会在我的console.log语句之后挂起...数据库填充,但我必须杀死使用Ctrl-c命令。

我已经尝试过compound seed harvest,但这并没有创建正确的种子文件,所以我决定自己创建。这是我的代码:

db / seeds / development / Host.js (种子文件)

console.log("Seeding Hosts....");

var hosts = [
  {
    hid: '1',
    name: 'MY API',
    domain: 'mydomain.com'
  }
];

hosts.forEach(function(obj, err){
  Host.create(obj, function(err, host){
    console.log('host Added: ', host);
  });
});

分贝/ schema.js

var Host = describe('Host', function () {
    property('hid', String);
    property('name', String);
    property('domain', String);
    set('restPath', pathTo.hosts);
});

配置/ database.js

module.exports = {
    development: {
        driver:   'mongodb',
        url:      'mongodb://localhost/apicache-dev'
    },
    test: {
        driver:   'mongodb',
        url:      'mongodb://localhost/apicache-test'
    },
    production: {
        driver:   'mongodb',
        url:      'mongodb://localhost/apicache-production'
    }
};

就像我说的,当我运行compound seed时,它会显示两个console.log语句,并且它将我的数据放入数据库,但它只是挂起......从未实际返回到命令行,所以我我被迫用Ctrl-c杀了它。我想解决这个问题,因为我必须自动化这个过程,如果它只是挂起,它有点难以自动化。我究竟做错了什么?任何帮助将不胜感激!

Cross-posted.

修改

因此,当我尝试使用从compound seed harvest生成的Coffee脚本版本时:

分贝/种子/开发/ Host.coffee

Host.seed ->
    hid: '1'
    name: 'MY API'
    domain: 'mydomain.com'
    id: "52571edd2ac9056339000001"

我收到错误集合名称必须是字符串。所以我有点好奇,去了第103行的 node_modules / jugglingdb-mongodb / node_modules / mongodb / lib / mongodb / collection.js 中生成错误的地方。我放了一个在{if}语句之前console.log(collectionName)看到一个有趣的输出......

{ hid: '1',
  name: 'MY API',
  domain: 'mydomain.com',
  id: NaN }

很明显,它不是一个字符串,而是一个哈希对象,我的集合名称(主机)无处可见。对我来说似乎是一个错误。

1 个答案:

答案 0 :(得分:1)

所以我终于开始工作了。显然,收获命令中的自动生成的ID有问题,所以我最终删除了该行,瞧!种植种子就像一种魅力。我将其余的JS文件转换为Coffee脚本文件,一切正常。有时你只需要在互联网上与自己交谈......

这是我的种子文件:

Host.seed ->
  hid: '1'
  name: 'MY API'
  domain: 'mydomain.com'

执行compound seed无需挂起并填充数据库。猜猜咖啡脚本是要走的路?