我的代码一遍又一遍地重复着。它将一个新文档插入名为Services
的Meteor Mongo集合中,该集合是一个全局对象,已在另一个文件(Services = new Mongo.Collection("services")
)中实例化。
Services.insert({
sku: 'hdrPhotos',
price: 100
});
Services.insert({
sku: 'twilightPhotos',
price: 100
});
Services.insert({
sku: 'videoClips',
price: 175
});
我想编写一个函数来获取集合名称和要插入的对象数组,但我不确定如何在我的函数中引用集合名称作为变量:
var insertIntoCollection = function(collectionName, arrayOfObjects){
for (index in arrayOfObjects){
// doesn't work
// collectionName.insert(arrayOfObjects[index]);
};
};
它会被称为
var serviceItems = [{
sku: 'hdrPhotos',
price: 100
},{
sku: 'twilightPhotos',
price: 100
},{
sku: 'videoClips',
price: 175
}];
insertIntoCollection("Services", serviceItems);
答案 0 :(得分:1)
尝试
insertIntoCollection(Services, serviceItems);
....如果您之前的"Services"
代码是一个字符串,那么您实际上是在函数中调用它:
"Services".insert(arrayOfObjects[index]);
这显然不是你想要的最终结果......
另一方面,我们不建议在数组上使用key in object
循环...请尝试循环使用它:
var insertIntoCollection = function(collection, dataArray){
for (var index=0; index<dataArray.length; index++){
collection.insert(dataArray[index]);
};
};
或者作为替代方案,您可以使用ECMAScript 5.1中实现的.forEach
方法...在您的情况下,您可以像这样使用它:
var insertIntoCollection = function(collection, dataArray){
dataArray.forEach(function(item){
collection.insert(item);
});
};