我从项目中删除了不安全和自动发布的包。但是我将我的集合放在“/ lib”中以供客户端和服务器访问,因为我从客户端插入了值。
当我从控制台输入“db.collectionName.find()。fetch()”时,我可以看到集合中的文档。
有什么方法可以禁用它吗?我知道发布和订阅,但我必须将集合放在服务器端如果没有错,我需要它在“/ lib”,以便我可以插入值。
这是我的收藏:
Products = new Mongo.Collection("products");
Products.attachSchema(new SimpleSchema({
//collection elements
}));
并允许插入,更新和删除包:
Products.allow({
insert: function(userId, doc){
return true;
},
update: function(userId, doc, fields, modifier){
return true;
},
remove: function(userId, doc){
return true;
}
});
并使用quickForm插入详细信息
{{> quickForm collection="Products" id="submitPostForm"
type="insert" doc=doc}}
和一个AutoForm.hooks,用于在提交快速表单之前插入我从用户那里获得的URL。它位于“/ client”文件夹
AutoForm.hooks({
submitPostForm: { //<--- this is the id of your form
before: { //<-- before submit
insert: function (doc) { //<-- get the doc to be submitted
//some values will be inserted in the collection before submitting
}
},
onSuccess: function (formType, result) {
},
onError: function (formType, error) {
}
}
});
使用模板查找集合中的所有项目以在客户端中列出它们,“因为我想在主页中显示我的集合中的所有文档。”
Template.list_products.helpers({
applications:function(){
return Products.find({});
}
});
如何不允许用户从控制台获取收集数据?
答案 0 :(得分:0)
您可以将集合放在/lib
中,在/server
中发布并在/client
中订阅,以便客户端和服务器都知道集合的存在和逻辑,但只知道服务器控制发送的内容。当你说控制台时,你是从终端或网络控制台引用meteor shell
吗?
我不认为浏览器控制台可以看到尚未发布的文档,但我不确定allow
如何改变它。我个人更喜欢只使用流星方法来改变收藏。