使用 MonogoDB 的规范化数据模型显示实际图像而不是 ObjectId

Show actual Image instead of ObjectId with MonogoDB's Normalized Data Model

我想显示上传到 MongoDB 的图片 当前它显示 ObjectId

Templates.coffee

Template.projectShow.helpers
  projects: ->
    Projects.find()

Projects.html

<template name="projectShow">
  <h2>Projects</h2>
     {{#each projects}}
        {{> showTemplate}}
     {{/each}}
</template>

<template name="showTemplate">  
  Title : {{title}} <br>
  Image : {{projectImage}}
</template>

Collections.coffee

@Projects = new Meteor.Collection('projects')
@imageStore = new FS.Store.GridFS("project-images")
@Images = new FS.Collection("project-images", stores: [imageStore])

Schemas.Projects = new SimpleSchema
  title:
    type: String

  projectImage:
    type: String
    autoform:
      afFieldInput:
      type: "fileUpload"
      collection: "Images"

Projects.attachSchema(Schemas.Projects)

您需要为 showTemplate 模板创建一个辅助函数,用于在文件集合中查找您需要的数据

projectImage returns 存储在 collectionsfs 集合中的图像的 ID。因此,要获得实际图像 url,您必须按照以下方式做一些事情:(可能不是 100% 正确的语法,但只是为了解释流程)

Template.showTemplate.helpers({
    projectImage: function(){
        return Images.findOne({_id: Template.instance().data.projectImage}).url();
    }
});