根据ID显示个人资料图片

时间:2017-06-25 17:51:39

标签: meteor meteor-blaze

  1. 用户注册并且所有数据都在“用户”(meteor useraccounts)集合中。
  2. 在个人资料页面中,用户可以上传个人资料图片(流星文件)。图片元数据在“图像”集合中注册。
  3. 每个人都可以浏览配置文件并且它工作得很好,除了我需要动态更改每张卡显示的个人资料图片的src链接。当我需要的信息出现在另一个集合中时,我不知道该怎么做。

    图片集:

    {
        "_id" : "LT6aCTFkbRn6AAKBg",
        "size" : 1467914,
        "type" : "image/jpeg",
        "name" : "profil.jpg",
        "meta" : {},
        "ext" : "jpg",
        "extension" : "jpg",
        "extensionWithDot" : ".jpg",
        "mime" : "image/jpeg",
        "mime-type" : "image/jpeg",
        "userId" : "3JAt887HkSooRRPk2",
        "path" : "assets\\app\\uploads\\images\\LT6aCTFkbRn6AAKBg.jpg",
        "versions" : {
            "original" : {
                "path" : "assets\\app\\uploads\\images\\LT6aCTFkbRn6AAKBg.jpg",
                "size" : 1467914,
                "type" : "image/jpeg",
                "extension" : "jpg"
            }
        },
        "_downloadRoute" : "/cdn/storage",
        "_collectionName" : "images",
        "isVideo" : false,
        "isAudio" : false,
        "isImage" : true,
        "isText" : false,
        "isJSON" : false,
        "isPDF" : false,
        "_storagePath" : "assets\\app\\uploads\\images",
        "public" : false
    }
    

    _id(LT6aCTFkbRn6AAKBg)不是userId。

    Template.profileDetails.helpers({
       user: function() {
        return Meteor.users.find();
      },
    
      PSEUDO:
      imageLinkForThisUser: function() {
        return Images.find('document in collection which has same userId key in it and return path');
      },
    

    谢谢!

1 个答案:

答案 0 :(得分:1)

如果用户已登录,则

Meteor.userId()将返回用户的当前_id

所以你的mongo查询应该是:

Images.findOne({userId: Meteor.userId()})['path'];

您可以使用findOne而不是find(我假设)每个用户只存储一个图像。

您的帮助功能将是:

Template.profileDetails.helpers({
   ...
   imageLinkForThisUser: function() {
    return Images.findOne({userId: Meteor.userId()})['path'];
  },
  ...
});

<强> HTML:

<img src={{imageLinkForThisUser}} />

提示:您无需拥有返回用户ID /用户数据的帮助程序。您可以直接使用把手来检索它。

Eg. {{currentUser.username}}

this回答中的更多内容