как включить внешние модели в мангуст? - PullRequest
8 голосов
/ 02 марта 2012

У меня проблема, когда я хочу включить свои модели с помощью mongoose в nodejs, я создаю модели со схемой, подобной этой

var mongoose = require('mongoose')
  , Schema = mongoose.Schema;

var Users = new Schema({
    idUser  : {type:String},
    username: {type:String}
});

// middleware
Users.pre('save', function (next,done) {
  notify(this.get('email') + done);
  // something goes wrong
  next(new Error('something went wrong'));
});

//registered on mongoose models
mongoose.model("Users",Users);

и я сохраняю в folde models / schema.js но я не знаю, как вызвать этот файл в app.js, когда я пытаюсь использовать этот код

var mongoose = require('mongoose')
  , models = require('./models/schema.js');

//mongoose configurationfor database;
var db = mongoose.connect("mongodb://localhost/vynchat");
var users = mongoose.model("Users");
users.save();

У меня ошибка при попытке начать sudo node app.js

throw e; // process.nextTick error, or 'error' event on first tick
              ^
TypeError: Object function model() {
    Model.apply(this, arguments);
  } has no method 'save'
    at Object.<anonymous> (/opt/development/vynapp/app.js:18:7)
    at Module._compile (module.js:441:26)
    at Object..js (module.js:459:10)
    at Module.load (module.js:348:31)
    at Function._load (module.js:308:12)
    at Array.0 (module.js:479:10)
    at EventEmitter._tickCallback (node.js:192:40)

модель ошибки () не имеет метода сохранения ... как я могу это исправить ..?

Ответы [ 2 ]

6 голосов
/ 02 марта 2012

Вы звоните users.save();, но users - это Модель .

Методы save могут использоваться на экземплярах моделей, например:

var mongoose = require('mongoose')
  , models = require('./models/schema');

var db = mongoose.connect("mongodb://localhost/vynchat")
  , Users = mongoose.model("Users");


var user = new User({
      "your": "data"
    });

user.save(function (err, model) {
  if (err) throw err;

  console.log("My new User is saved",
    "`save` hook worked as espected since we had no errors here");
});

Вам следует прочитать API модулей модуля node.js и внимательно прочитать API mongoose .

В качестве примечания: когда вы require('mongoose')первый раз в вашем узле кода появится экземпляр коннектора mongoose, последующие запросы приведут к тому же объекту.

0 голосов
/ 02 января 2013

Вам не хватает param объекта схемы при создании объекта модели.Сделайте это:

var users_model = mongoose.model("Users", YourSchemaObject);
var User_Document = new user_model();
User_Document.field_name = 'value'; //here you can access getter/setter/methods
User_Document.save();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...