My locationsModel
file:
mongoose = require 'mongoose' threeTaps = require '../modules/threeTaps' Schema = mongoose.Schema ObjectId = Schema.ObjectId LocationSchema = latitude: String longitude: String locationText: String Location = new Schema LocationSchema Location.methods.testFunc = (callback) -> console.log 'in test' mongoose.model('Location', Location);
To call it, I'm using:
myLocation.testFunc {locationText: locationText}, (err, results) ->
But I get an error:
TypeError: Object function model() { Model.apply(this, arguments); } has no method 'testFunc'
Each Schema can define instance and static methods for its model.
Mongoose provides 2 ways of doing this, methods and statics. Methods adds an instance method to documents whereas Statics adds static "class" methods to the Models itself. Given the example Animal Model below: var AnimalSchema = mongoose. Schema({ name: String, type: String, hasTail: Boolean }); module.
Methods operate on an instance of a model. Statics behave as helper functions only and can perform any action you want, including collection level searching. They aren't tied to an instance of a Model. But methods are also defined on models and work on all the instances of that model.
Mongoose Populate() Method. In MongoDB, Population is the process of replacing the specified path in the document of one collection with the actual document from the other collection.
You didn't specify whether you were looking to define class or instance methods. Since others have covered instance methods, here's how you'd define a class/static method:
animalSchema.statics.findByName = function (name, cb) { return this.find({ name: new RegExp(name, 'i') }, cb); }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With