我正在尝试用种子文件填充我的 CompoundJS 应用程序的 Mongo 数据库,但每当我运行 compound seed
时,终端都会在我的控制台.log语句之后挂起......数据库已填充,但我必须使用 Ctrl-c 终止该命令。
我试过做compound seed harvest
,但这并不能创建正确的种子文件,所以我决定制作自己的种子文件。 这是我各自的代码:
db/seeds/development/Host.js (seed file(
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);
});
});
数据库/模式.js
var Host = describe('Host', function () {
property('hid', String);
property('name', String);
property('domain', String);
set('restPath', pathTo.hosts);
});
配置/数据库.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
时,它显示控制台.log语句,并将我的数据放入数据库中,但它只是挂起......实际上从未返回到命令行,因此我被迫使用 Ctrl-c 杀死它。 我想解决这个问题,因为我必须自动化这个过程,如果它只是挂起,自动化有点困难。 我做错了什么? 任何帮助将不胜感激!
交叉发布。
编辑
因此,当我尝试使用从compound seed harvest
生成的咖啡脚本版本时:
db/seeds/development/Host.coffee
Host.seed ->
hid: '1'
name: 'MY API'
domain: 'mydomain.com'
id: "52571edd2ac9056339000001"
我得到错误集合名称必须是字符串。 所以我有点好奇,去了产生错误的地方......在 node_modules/Jugglingdb-mongodb/node_modules/mongodb/lib/mongodb/collection.js第 103 行。 我在 if 语句之前放了一个console.log(collectionName)
,并看到了一个有趣的输出......
{ hid: '1',
name: 'MY API',
domain: 'mydomain.com',
id: NaN }
很明显,它不是一个字符串,而是一个哈希对象,我的集合的名称(Host(不见了。 对我来说似乎是一个错误。
终于让它工作了。 显然,harvest 命令中的自动生成的 id 有问题,所以我最终删除了那行,瞧! 播下种子就像一种魅力。 我将其余的JS文件转换为咖啡脚本文件,一切正常。 有时你只需要在互联网上与自己交谈......
这是我的种子文件:
Host.seed ->
hid: '1'
name: 'MY API'
domain: 'mydomain.com'
并且执行compound seed
工作而无需挂起并填充数据库。 猜猜咖啡脚本是要走的路吗?