是否可以使用edgee:slingshot文件上传器为meteor上传文件而无需在meteor中创建用户帐户?

时间:2015-03-05 21:38:17

标签: meteor meteor-slingshot

我正在尝试创建一个简单的评论表单,访问者可以在其中创建评论。评论将是:comment = {name:“string”,body:“string”,image:“string”}

我希望任何人都能够创建评论,并上传图片而无需创建用户帐户。动机是这是一个纪念去世的朋友。访客应该能够上传内存图片而无需创建帐户。

当我尝试将文件上传到AWS时,我收到以下错误:

TypeError: Meteor.userId is not a function


userId: Meteor.userId()                                                 // 70

我在该行设置断点,发现第70行Meteor.userId()未定义。

validate: function(file) {                                                  // 68
      var context = {                                                           // 69
        userId: Meteor.userId()                                                 // 70
      };                                                                    

    // 71
      try {                                                                     // 72
        var validators = Slingshot.Validators,                                  // 73
            restrictions = Slingshot.getRestrictions(directive);                // 74
                                                                                // 75
        validators.checkAll(context, file, metaData, restrictions) && null;     // 76
      } catch(error) {                                                          // 77
        return error;                                                           // 78
      }                                                                         // 79
    },      

有没有办法禁止Meteor.userId()通过API干净地上传slingshot文件?或者只是让人们注册并登录,以便Meteor.userId()可以使用?

2 个答案:

答案 0 :(得分:1)

您无需上传userId。但是当您使用验证时,您必须添加帐户包。您需要添加至少一个登录提供程序包:accounts-password或....

目前似乎是一个错误。

答案 1 :(得分:0)

在弹弓中是bug,但也许你可以解决它直到修复它?

if (!Meteor.userId)
  Meteor.userId = function () {};

请注意,此声明必须在使用弹弓之前发出,如果您的应用的任何部分依赖于Meteor.userId未定义为未启用帐户的标志,则此更改可能会破坏您的应用。