如何将集合名称作为参数传递给Meteor中的方法?
感谢我糟糕的英语水平,我不得不用下面的代码来表达我的想法 友好编辑: 我正在尝试编写一个通用的如何将集合名称作为参数传递给Meteor中的方法?,meteor,Meteor,感谢我糟糕的英语水平,我不得不用下面的代码来表达我的想法 友好编辑: 我正在尝试编写一个通用的confirmAndRemoveCollection方法,该方法接受collectionName和itemId,我想对该集合执行操作。由于collectionName是一个字符串,因此我无法对其执行DB操作。有人可以建议我如何使用集合名称来访问实际的集合对象吗 confirmAndRemoveCollection:(collectionName,itemId)-> check(itemId
confirmAndRemoveCollection
方法,该方法接受collectionName
和itemId
,我想对该集合执行操作。由于collectionName
是一个字符串,因此我无法对其执行DB操作。有人可以建议我如何使用集合名称来访问实际的集合对象吗
confirmAndRemoveCollection:(collectionName,itemId)->
check(itemId,String)
check(collectionName,String)
sweetAlert({
title:"confirm"
text:"blabla"
type:"info"
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "delete"
cancelButtonText: "cancel"
closeOnConfirm: false,
},(isConfirm)->
if isConfirm
collectionName.remove(itemId)
else
return
swal(
'success'
"selected item deleted"
"success"
)
变量
collectionName
是一个字符串对象,因此无法对其调用MongoDB方法
完成任务的一种方法是创建一个将字符串名称映射到集合对象的对象
例如:
Posts=新的Mongo.集合(“Posts”);
Comments=新的Mongo.Collection(“Comments”);
集合={
"岗位":岗位,,
“评论”:评论
};
然后您可以在代码中执行类似的操作
if isConfirm
Collections[collectionName].remove(itemId)
这里只需添加一个替代选项(尽管这个问题已经很老了):您可以将集合本身作为参数传递,它将起作用 由于集合是一个对象,当您将其作为参数传递时,它将“通过引用”传递,并且您将能够调用其方法 以@FullStack为例(当然,它也可以工作): 然后做一些类似的事情:
collectionRemove(Posts, 1);
collectionRemove(Comments, 24);
“集合”是键值属性的集合(即对象)还是对象的集合(即数组)?
collectionRemove(Posts, 1);
collectionRemove(Comments, 24);