2016-06-25 5 views
1

Я начинаю to nodejs, и я разрабатываю REST api для взаимодействия с mongodb. Я использовал экспресс и мангуста, как описано в следующем руководстве:TypeError: объект не является функцией в узле Js

https://codeforgeek.com/2015/08/restful-api-node-mongodb/

У меня есть настройки Монго дб и вот мой код сервера в узле JS:

var express  = require("express"); 
var app   = express(); 
var bodyParser = require("body-parser"); 
var router  = express.Router(); 
var mongoOp  = require("./models/mongo"); 
//var user  = require("./Entities/User"); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({"extended" : false})); 
router.get("/",function(req,res){ 
    res.json({"error" : false,"message" : "Hello World"}); 
}); 
router.route("/users") 
    .get(function(req,res){ 
     var response = {}; 
     mongoOp.find({},function(err,data){ 
     // Mongo command to fetch all data from collection. 
      if(err) { 
       response = {"error" : true,"message" : "Error fetching data"}; 
      } else { 
       response = {"error" : false,"message" : data}; 
      } 
      res.json(response); 
     }); 
    }) 
    .post(function(req,res){ 
     var db = new mongoOp(); 
     var response = {}; 
     // fetch email and password from REST request. 
     // Add strict validation when you use this in Production. 
     db.userEmail = req.body.email; 
     // Hash the password using SHA1 algorithm. 
     db.userPassword = require('crypto') 
          .createHash('sha1') 
          .update(req.body.password) 
          .digest('base64'); 
     db.save(function(err){ 
     // save() will run insert() command of MongoDB. 
     // it will add new data in collection. 
      if(err) { 
       response = {"error" : true,"message" : "Error adding data"}; 
      } else { 
       response = {"error" : false,"message" : "Data added"}; 
      } 
      res.json(response); 
     }); 
    }); 
app.use('/',router); 
app.listen(3000); 
console.log("Listening to PORT 3000"); 

и вот мой модуль

Монго
var mongoose = require("mongoose"); 
mongoose.connect("mongodb://localhost:27017/Appdb"); 
//Create instance of Schema 
var mongoSchema = mongoose.schema; 
//Create Schema 
var userSchema = { 
    "userEmail":String, 
    "userPassword":String 
} 
//Create model if not exists. 
module.export = mongoose.model('userLogin',userSchema); 

Когда я использовал RESTClient (аддон в firefox для тестирования REStful приложения), он дает следующую ошибку:

TypeError: object is not a function at E:\node\server.js:30:18
at Layer.handle [as handle_request] (E:\node\node_modules\express\lib\router\layer.js:95:5) .........

enter image description here

Может кто-нибудь помочь мне, пожалуйста ...

ответ

1

module.exports = mongoose.model ('Userlogin', userSchema);

экспорт использовать не экспортировать

+0

Теперь дайте мне TypeError: Не строку или буфер в TypeError (родной) на Hash.update (crypto.js: 119: 16) на E: \ узел \ server.js: 38: 28 ошибка ... – Roshan

+0

db.userPassword = требуется ('') крипто .createHash ('sha1') .update (req.body.password) .digest ('base64'); что-то не так с этим. можно проверить ваш req.body.password по крайней мере немного строки с помощью console.log –

+0

я уже добавил этот код! – Roshan

Смежные вопросы