2015-11-06 29 views
5

Próbuję nauczyć node.js z tego poradnika: https://scotch.io/tutorials/build-a-restful-api-using-node-and-express-4node.js TypeError: Niedźwiedź nie jest funkcją

Kiedy dostać się do Tworzenie niedźwiedzia POST/api/nosi odcinek pojawia się następujący błąd z listonosz enter image description here

Mówi, że niedźwiedź nie jest funkcją i gdy ją tworzę, var bear = new Bear(); jest, gdy pojawia się błąd.

Oto moje bear.js

// app/models/bear.js 

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

var BearSchema = new Schema({ 
    name: String 
}); 

module.exports = mongoose.model('Bear', BearSchema); 

I tu jest moje server.js

// server.js 

// BASE SETUP 
// ============================================================================= 

// call the packages we need 
var express = require('express');  // call express 
var app  = express();     // define our app using express 
var bodyParser = require('body-parser'); 
var mongoose = require('mongoose'); 
mongoose.connect('mongodb://node:[email protected]:27017/Iganiq8o'); // connect to our database 
var Bear  = require('./app/models/bear'); 

// 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 

// 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 
}); 

// test route to make sure everything is working (accessed at GET http://localhost:8080/api) 
router.get('/', function(req, res) { 
    res.json({ message: 'hooray! welcome to our api!' }); 
}); 
// <-- route middleware and first route are here 

// more routes for our API will happen here 

// on routes that end in /bears 
// ---------------------------------------------------- 
router.route('/bears') 

    // create a bear (accessed at POST http://localhost:8080/api/bears) 
    .post(function(req, res) { 

     var bear = new Bear();  // create a new instance of the Bear model 
     bear.name = req.body.name; // set the bears name (comes from the request) 

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

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

    }); 


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

// START THE SERVER 
// ============================================================================= 
app.listen(port); 
console.log('Magic happens on port ' + port); 

Co mogę zrobić, aby znieść funkcję ?? Z góry dziękuję.

+0

Czy umieściłeś punkt przerwania i sprawdziłeś, jaka jest wartość 'Niedźwiadka' na linii 47. w pliku server.js? – nem035

+0

Wiem, że to naprawdę brzydkie, ale czy możesz spróbować przenieść swoje wymagania do wnętrza trasy? '' 'var Niedźwiedź = wymagają ('./ app/models/bear');' '' '' 'var bear = new Bear();' '' Podejrzewam, że ma to coś wspólnego z tym, jak wymaga pracy – Komo

Odpowiedz

0

Niestety, nie mogę komentować.

Spróbuj to rzeczy:

1.Wykorzystanie lokalnej bazy danych MongoDB i ustawić ciąg połączenia tu do Ciebie:

mongoose.connect('mongodb://node:[email protected]:27017/Iganiq8o'); 

parametr ciało 2.Set w Postman, a nie cel.

Powiązane problemy