删除不安全后我无法添加新配方并收到以下错误消息访问被拒绝[403] cfs_base-package.js:108 但是,如果我再次添加不安全的消息,我可以再次添加食谱。你能帮我解决这个问题 完整的源代码Github
collections.js
Recipes = new Mongo.Collection('recipes');
Reviews = new Mongo.Collection('reviews');
RecipesImages = new FS.Collection("recipesImages", {
stores: [new FS.Store.GridFS("recipesImages")]
});
服务器/ permissions.js
RecipesImages.allow({
insert: function(userId, doc) {
return true;
},
update: function(userId, doc, fieldNames, modifier) {
return true;
},
remove: function(userId, doc) {
return false;
},
download: function(userId,doc) {
return true;
},
fetch: null
});
schemas.js
Recipes.attachSchema(new SimpleSchema({
ownerId: {
type: String
},
ownerName: {
type: String
},
voters:{
type:Array,
optional:true
},
'voters.$':{
type:String
},
name: {
type: String,
label: "Recipe Name",
max: 100
},
ingredients: {
type: [Object],
minCount: 1
},
"ingredients.$.name":{
type: String
},
"ingredients.$.amount": {
type: String
},
description: {
type: String,
label: "How to prepare ",
},
time: {
type: Number,
label: "Time (Minutes)",
min:0
},
likes:{
type:Number,
optional:true
},
image: {
type: String,
autoform: {
afFieldInput: {
type: "cfs-file",
collection: 'recipesImages',
label: 'Recipe Picture'
}
}
}
}));
答案 0 :(得分:2)
从您的回购中获得此功能,主要问题是,当您允许插入RecipesImages
FS集合时,您对Recipes
集合执行的操作不同,因此当它尝试通过简单插入时架构它可以处理图像部分,但不能处理配方文档的其余部分。
当然,您可能希望加强安全性,但下面的内容应该有效:
Recipes.allow({
insert: function(userId, doc) {
return true;
}
});
还没有填充ownerName字段上弹出的架构上的验证错误,所以我不得不将其设置为可选,但我想如果你可以插入不安全的东西,这只是一个错字:
ownerName: {
type: String,
optional: true
}