Mongodb Meteor应用程序在尝试填充集合时崩溃

Mongodb Meteor应用程序在尝试填充集合时崩溃,mongodb,meteor,meteor-collection2,simple-schema,Mongodb,Meteor,Meteor Collection2,Simple Schema,此代码适用于: Schemas.City = new SimpleSchema({ name: { type: String, label: 'City', unique: true } }); Cities = new Mongo.Collection('cities'); Cities.attachSchema(Schemas.City); Meteor.startup(function() { } Cities.inse

此代码适用于:

Schemas.City = new SimpleSchema({
    name: {
        type: String,
        label: 'City',
        unique: true
    }
});

Cities = new Mongo.Collection('cities');
Cities.attachSchema(Schemas.City);
Meteor.startup(function() {
}
Cities.insert([{
    name: 'Warszawa'
}, {
    name: 'Krakow'
}]);
此代码适用于:

Schemas.City = new SimpleSchema({
    name: {
        type: String,
        label: 'City',
        unique: true
    }
});

Cities = new Mongo.Collection('cities');
Cities.attachSchema(Schemas.City);
Meteor.startup(function() {
}
Cities.insert([{
    name: 'Warszawa'
}, {
    name: 'Krakow'
}]);
此代码适用于:

Schemas.City = new SimpleSchema({
    name: {
        type: String,
        label: 'City',
        unique: true
    }
});

Cities = new Mongo.Collection('cities');
Cities.attachSchema(Schemas.City);
Meteor.startup(function() {
}
Cities.insert([{
    name: 'Warszawa'
}, {
    name: 'Krakow'
}]);
但该代码不:

Meteor.startup(function() {
    if (Cities.find().count() == 0) {
        Cities.insert([{
            name: 'Warszawa'
        }, {
            name: 'Krakow'
        }]);
    }
}
服务器上的console中出现以下错误:

W20150911-13:34:52.281(4)? (STDERR) Error: 0 is not allowed by the schema
W20150911-13:34:52.281(4)? (STDERR)     at getErrorObject (packages/aldeed:collection2/collection2.js:417:1)
如您所见,我使用包来控制数据操作,以便它们遵循模式。模式很简单,只要求没有重复项

发现问题的正确方向是什么?我错过什么了吗

更新:在Meteor中插入时没有阵列 好的,我明白了。在Meteor中,使用

Collection.insert([entry1, entry2, ...])
语法。这反过来又起作用:

Collection.insert(entry1);
Collection.insert(entry2);

因此,问题得到了部分解决。

batchInsert
应在Meteor中使用,而不是在这种情况下使用
insert

Collection.batchInsert([entry1, entry2, ...])
你必须使用

var bulk = Meteor.Collection.get('cities').rawCollection().initializeUnorderedBulkOp();
cities.forEach(function(city){
  bulk.insert(city)
})
bulk.execute();

上面的代码未经测试,但应该可以工作。如果您想查看
InitializeUnderedbulkop

,我想这就是您要查找的修饰符: