删除不安全后无法添加食谱并出现错误

After removing insecure unable to add recipes and getting error

删除不安全因素后,我无法添加新配方并收到以下错误消息访问被拒绝[403]cfs_base-package.js:108 但是,如果我再次添加不安全的消息,我可以添加食谱 again.Can 请你帮我解决这个问题 完整的源代码 Github

collections.js

Recipes = new Mongo.Collection('recipes');
Reviews = new Mongo.Collection('reviews');
RecipesImages = new FS.Collection("recipesImages", {
    stores: [new FS.Store.GridFS("recipesImages")]
});

server/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'
            }
        }
    }
}));

从你的回购中得到这个工作,主要问题是当你允许插入到 RecipesImages FS 集合时,你没有对 Recipes 集合做同样的事情,所以当它试图插入时通过简单的模式,它可以完成图像部分,但不能完成食谱文档的其余部分。

当然,为了安全起见,您可能希望加强此功能,但以下内容应该有效:

    Recipes.allow({
      insert: function(userId, doc) {
          return true;
      }
    });

在未填充 ownerName 字段上弹出的模式也存在验证错误,因此我不得不将其设置为可选,尽管我猜你是否可以使用不安全的方式插入这只是一个错字:

ownerName: {
    type: String,
    optional: true
}