【问题标题】:First request returns 503 for just uploaded image to Meteor GridFS第一个请求为刚刚上传到 Meteor GridFS 的图像返回 503
【发布时间】:2015-07-18 13:01:40
【问题描述】:

谁能告诉我为什么会发生这个错误以及如何解决它? 当我重新加载页面 (cmd+r) 时,图像请求工作正常。

来自浏览器控制台的错误:

http://xxxxx.meteor.com/cfs/files/images2/aEaqKMjLQZcDPHLS8503(服务不可用)

会发生什么:

  1. 图片已上传 (gridFS)
  2. 网址已添加到用户个人资料中
  3. img src="{{imgsrc}}" 被重新更新,因此是一个 http 请求。
  4. 请求url正确但结果为503
  5. 重新加载页面,错误消失。

上传图片的代码

Template.profileedit.events({
'change .myFileInput': function(event, template) {
var files = event.target.files;

for (var i = 0, ln = files.length; i < ln; i++) {
  Images.insert(files[i], function (err, fileObj) {


      var userId = Meteor.userId();
      var imagesURL = {
        "profile.image": "/cfs/files/images2/" + fileObj._id

      };
      Meteor.users.update(userId, {$set: imagesURL});


  });


}


}

模板助手

Template.profileedit.helpers({
  imgsrc: function() {

    var user = Meteor.users.findOne({"_id" : Meteor.userId()});

    return Meteor.user().profile.image;


  }
});

显示图像的 HTML:

<template name="profileedit">
  <img src="{{imgsrc}}" style="width:400px" >
</template>

其他东西

问题在本地和meteor.com 上都是一样的 不安全且自动发布处于活动状态(这只是学习步骤)

谢谢 杰斯珀

【问题讨论】:

    标签: javascript meteor gridfs


    【解决方案1】:

    我想你遇到了一个问题,Mongo 还没有准备好检索对象。我的猜测是,响应式更新是在您的图像实际可用于检索之前发生的,但是当您点击刷新时,它就在那里并准备好被检索,这就是为什么这种解决方法有效的原因。

    有几种方法可以解决这个问题。例如:https://github.com/CollectionFS/Meteor-CollectionFS 基本上允许您设置“等待”图像,该图像将在您的文件未准备好时显示,并在您的图像设置为检索时响应更新。您也可以自己执行此操作,并显示您的实现。

    【讨论】:

    • 还有其他更好的方法来解决这个问题吗?当图像准备好并在那里调用页面渲染时是否有任何回调?
    猜你喜欢
    • 1970-01-01
    • 2017-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-25
    • 1970-01-01
    • 2014-12-19
    • 2016-04-23
    相关资源
    最近更新 更多