删除不安全后无法添加食谱并收到错误

时间:2016-02-01 19:06:47

标签: javascript meteor meteor-autoform

删除不安全后我无法添加新配方并收到以下错误消息访问被拒绝[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'
            }
        }
    }
}));

1 个答案:

答案 0 :(得分:2)

从您的回购中获得此功能,主要问题是,当您允许插入RecipesImages FS集合时,您对Recipes集合执行的操作不同,因此当它尝试通过简单插入时架构它可以处理图像部分,但不能处理配方文档的其余部分。

当然,您可能希望加强安全性,但下面的内容应该有效:

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

还没有填充ownerName字段上弹出的架构上的验证错误,所以我不得不将其设置为可选,但我想如果你可以插入不安全的东西,这只是一个错字:

ownerName: {
    type: String,
    optional: true
}