简体   繁体   中英

Cannot access or use documents showing in mongo db terminal

I created a collection called Stampest that stores a reference of an uploaded image and a title string, created by a user. Using the ostrio:autoform package. This package creates a collection called Images where all the user uploaded images are stored and hense referenced to/from.

When I query mongo in my terminal using

db.stampest.find({})

I get the entries

在此处输入图片说明

Which shows that there are documents in the database, in the Stampest Collection. But the PROBLEM is that when I look at the collection in Meteor Toys debug, it says its empty, and when I insert a document, in this case, the image and the title, the collection changes to 1 for a split second and geos back to 0. There are no error from the terminal or console

As a consequence, I cannot access these documents, what can I do?

This is the schema.js

Schemas = {};
Stampest  = new Meteor.Collection('stampest');

Stampest.allow({  
  insert: function (userId, doc) {
    return userId;
  },
  update: function (userId, doc, fields, modifier) {
    // can only change your own documents
    return doc.userId === userId;
  },
  remove: function (userId, doc) {
    // can only remove your own documents
    return doc.userId === userId;
  }
});


Schemas.Stampest = new SimpleSchema({
  title: {
    type: String,
    max: 60
  },
  picture: {
    type: String,
    autoform: {
      afFieldInput: {
        type: 'fileUpload',
        collection: 'Images',
        // uploadTemplate: 'uploadField' // <- Optional
        // previewTemplate: 'uploadPreview' // <- Optional
      }
    }
  }
});

Stampest.attachSchema(Schemas.Stampest);

The publish is like this:

Meteor.publish('stampest', function () {
    return Stampest.find({author: this.userId}).fetch();
     console.log(Stampest.find());
});

The user inserts the image and the title like this:

<template name="createStamp">
    <div class="grid-block">
        <div class="grid-container">
            <div class="upload-img">
                <a href="{{file.link}}">{{file.original.name}}</a>
            </div>

            <div class="new-stamp-container">
            {{> quickForm collection="Stampest" type="insert" id="insertStampForm" class="new-stamp-form"}}
            </div>
        </div>  
    </div>
</template>

From what I see in your code, you are returning an Array of db items and not a Cursor in your code. If you take a look at https://docs.meteor.com/api/pubsub.html , you'll notice that regular publications return simple cursors or array of cursors but never your fetched data.

edit: also, the console.log in your publication will never be interpreted as it returns on the previous line.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM