I am trying to create a simple MongooseJS example program that gets a list of items from a collection, and it\'s coming back empty every time. Here is the code:
mongoose
will normalize the name of collection to lowercase and pluralzed. Therefore, you should insert into db.samplecollections
instead of db.sampleCollection
. (Notice the difference of letter c
and s
here).
to test it:
s = new sampleCollection({sampleField: 'hello'}); // creates a new record
s.save(function(err) {
sampleCollection.find({ } , function (err, items) {
console.log(items);
console.log(err);
items.forEach( function(item) {
console.log(item);
});
});
});
and it properly prints:
[ { sampleField: 'hello', _id: 4f28ab4cc9e58f710a000001 } ]
null
{ sampleField: 'hello', _id: 4f28ab4cc9e58f710a000001 }
then in mongo shell:
> show collections
samplecollections //<<<<<<<<<<<<<< It's all lowercase and pluralized
system.indexes
> db.samplecollections.find()
{ "sampleField" : "hello", "_id" : ObjectId("4f28ab4cc9e58f710a000001") }
While this is true, you can specify the name of the collection in the third argument and it will use the case from that string:
var sampleCollection = mongoose.model('sampleCollection', sampleSchema,'SampleCollection');