2016-05-03 14 views
0

Das Problem, dass es mir das Schema Genre verwenden tut lassen ich habe 2 Schemata Benutzer und Genre Benutzerschema funktionieren gut, aber das Genre Schema ist undefindMongoose und Knoten js - Typeerror: Objekt ist keine Funktion

Benutzer js - Schema

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

var Genre = require('../Models/genre'); 

// create a schema 
var userSchema = new Schema({ 
    name: { type: String, required: true, unique: true }, 
    email: { type: String, required: true, unique: true }, 
    password: { type: String, required: true }, 
    age: String, 
    gender: String, 
    genres: [Genre.genreSchema] 
}); 

// the schema is useless so far 
// we need to create a model using it 
var User = mongoose.model('User', userSchema); 

// make this available to our users in our Node applications 
module.exports = User; 

genre.js - Schema

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

// create a schema 
var genreSchema = new Schema({ 
    name: { type: String, required: true, unique: true }, 
    age: String, 
    gender: String 
}); 

// the schema is useless so far 
// we need to create a model using it 
var Genre = mongoose.model('Genre', genreSchema); 

// make this available to our genres in our Node applications 
module.exports = Genre; 

Genre Controller - Router --- gleiche wie Benutzer-Router-Controller

var express = require('express'); 
var bodyParser = require('body-parser'); 
var Genre = require('../Models/genre'); 

// ROUTES FOR OUR API 
// ============================================================================= 
var router = express.Router();    // get an instance of the express Router 

// middleware to use for all requests 
router.use(function(req, res, next) { 
    // do logging 
    console.log('Something is happening.'); 
    next(); // make sure we go to the next routes and don't stop here 
}); 

router.route('/genres') 

    // create a genre 
    .post(function(req, res) { 
     console.log(Genre); 

     **//here is the error when trying to post new genre** 
     var Genre = new Genre(req.body);  // create a new instance of the user model 

     // save the genre and check for errors 
     Genre.save(function(err) { 
      if (err) 
       res.send(err); 

      res.json({ message: 'Genre created!' }); 
     }); 

    }) 

    // get all the genres 
    .get(function(req, res) { 
     Genre.find(function(err, genres) { 
      if (err) 
       res.send(err); 

      res.json(genres); 
     }); 
    }); 

    module.exports = router; 

server.js - die App js

var express = require('express'); 
var app = express(); 
var bodyParser = require('body-parser'); 
var userRouter = require('./Controllers/user'); 
var genreRouter = require('./Controllers/genre'); 

var mongoose = require('mongoose'); 
mongoose.connect('mongodb://localhost:27017'); // connect to our datababase 

// configure app to use bodyParser() 
// this will let us get the data from a POST 
app.use(bodyParser.urlencoded({ extended: true })); 
app.use(bodyParser.json()); 

var port = process.env.PORT || 8080;  // set our port 


// REGISTER OUR ROUTES ------------------------------- 
// all of our routes will be prefixed with /api 
app.use('/api', userRouter); 
app.use('/api', genreRouter); 

// START THE SERVER 
// ============================================================================= 
app.listen(port); 
console.log('see whats happening on port ' + port); 

warum das Modell undefind nur ist, wenn ich neues Genre schreiben? und für den Benutzer funktioniert es gut? ist es die Möglichkeit, Schema innerhalb des Schemas zu tun? oder gibt es einen besseren Weg?

Ich habe versucht mit nur das Genre-Modell zu verwenden aus dem Benutzer und es immer noch denselben Fehler

Ich hoffe, ich bin klar genug Dank für die Helfer

Antwort

2

Sie sollten nicht den gleichen Namen verwenden für das Schema und für das neue Genre.

versuchen, es zu

var newGenre = new Genre(req.body);  // create a new instance of the user model 

    // save the genre and check for errors 
    newGre.save(function(err) { 
     if (err) 
      res.send(err); 

     res.json({ message: 'Genre created!' }); 
    }); 
+0

Ändern ich wusste, es sollte etwas, das einfach hahah Dank sein – Erez

Verwandte Themen