Почему моя модель Mongoose не загружается? - PullRequest
1 голос
/ 16 сентября 2011

Это мой locationsModel.js файл:

var LocationSchema, LocationsSchema, ObjectId, Schema, mongoose;
mongoose = require('mongoose');
Schema = mongoose.Schema;
ObjectId = Schema.ObjectId;
LocationSchema = {
  latitude: String,
  longitude: String,
  locationText: String
};
LocationsSchema = new Schema(LocationSchema);
LocationsSchema.method({
  getLocation: function(callback) {
    return console.log('hi');
  }
});
exports.Locations = mongoose.model('Locations', LocationsSchema, 'locations');

В моем контроллере у меня есть:

var Locations, mongoose;
mongoose = require('mongoose');
Locations = require('../models/locationsModel').Locations;
exports.search = function(req, res) {
  var itemText, locationText;
  Locations.getLocation('info', function(err, callback) {
    return console.log('calleback');
  });
  return;
};

Когда я запускаю его, я получаю следующую ошибку:

TypeError: Object function model() {
    Model.apply(this, arguments);
  } has no method 'getLocation'

Чего мне не хватает?

1 Ответ

3 голосов
/ 16 сентября 2011

Я думаю, что вы ищете статика, а не метод.

Согласно документам :

Я думаю, вы должны определить функцию getLocationsследующим образом (глядя на ваше использование getLocations, вы получили строковый параметр и обратный вызов:

LocationsSchema.statics.getLocation = function(param, callback) {
    return console.log('hi');
}

РЕДАКТИРОВАТЬ:

Разница между statics и methods вы вызываете его для "типа" или "объектов" этого типа. Адаптировано из примеров :

BlogPostSchema.methods.findCreator = function (callback) {
  return this.db.model('Person').findById(this.creator, callback);
}

, которые вы вызываете как таковые:

BlogPost.findById(myId, function (err, post) {
  if (!err) {
    post.findCreator(function(err, person) {
      // do something with the creator
    }
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...