[Solved]Stuck with collection


#1

Hello everyone!

I study meteor with LevelUp Tuts from youtube and got some problems from start.
This is my code:

client/main.html

<body>
  <ul>
    {{#each resolutions}}
    {{> resolution}}
    {{/each}}
  </ul>
</body>

<template name="resolution">
  <li>
    {{title}}
  </li>
</template>

client/main.js

import { Mongo } from 'meteor/mongo';
 
const Resolutions = new Mongo.Collection('resolutions');

Template.body.helpers ({
 resolutions() {
   console.log(Resolutions.find({}).count());  // returns 0
   return Resolutions.find({});
  },
});

I inserted some data via meteor mongo console:

db.Resolutions.insert({title:"test",createdAt:new Date()})

and with low-case ‘resolution’

db.resolutions.insert({title:"test",createdAt:new Date()})

But at front-end I see no output data and no console errors also.
Meteor version 1.3

What is wrong with my code?
Can anyone help please?


#2

Did you publish and subscribe to the collection? Use msavin:mongol to check if the collection is subscribed to on client.


#3

No, I just follow the tutorial.
I’ll try msavin:mongol.

thanks!


#4

I have an idea!

I use cloud9 platform as IDE and hosting 2-in-1.

And I noticed this:

mongo server parameters:

MongoDB shell version: 2.6.7
connecting to: 127.0.0.1:8081/meteor

The same time meteor itself run at

App running at: http://0.0.0.0:8080/

Different IP and ports!
May be the problem because of that??

P.S. but I made “to-do” app from official meteor tutorial and it worked ok at the same environment…


#5

Is that all your code?

As it stands, you are not sharing the collection between client and server, so it’s currently a client-only collection.

If you intend using the new import syntax, then I suggest you read the introductory Meteor tutorial. However, you could do the following, which should get you up and running (typos notwithstanding!):

Create an imports/api folder.

In imports/api/Resolutions.js

import { Mongo } from 'meteor/mongo';
 
export const Resolutions = new Mongo.Collection('resolutions');

and replace const Resolutions = new Mongo.Collection('resolutions'); in your client/main.js with import { Resolutions } from '/imports/api/Resolutions.js';.

In server/main.js

import { Resolutions } from '/imports/api/Resolutions.js';

or

import '/imports/api/Resolutions.js';

if you don’t need access to the Resolutions collection in server/main.js.

BTW, in the meteor mongo shell, you should use db.resolutions.


#6

@robfallows , it works!

Many thanks for your help!

The key point was to use import in server/main.js