【问题标题】:TypeError: object is not a function in node JsTypeError:对象不是节点 Js 中的函数
【发布时间】:2016-10-27 20:40:38
【问题描述】:

我是 nodejs 的初学者,我正在开发一个 REST api 来与 mongodb 交互。我按照以下教程中的说明使用了 express 和 mongoose:

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

我已经设置了 mongo db,这是我在节点 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");

这是我的 mongo 模块

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
在 Layer.handle [作为 handle_request] (E:\node\node_modules\express\lib\router\layer.js:95:5) ....

谁能帮帮我...

【问题讨论】:

    标签: javascript node.js mongodb rest


    【解决方案1】:

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

    使用导出而不是导出

    【讨论】:

    • 现在它给了我 TypeError: Not a string or buffer at TypeError (native) at Hash.update (crypto.js:119:16) at E:\node\server.js:38:28错误...
    • db.userPassword = require('crypto') .createHash('sha1') .update(req.body.password) .digest('base64');这有什么问题。你能用 console.log 检查你的 req.body.password 至少是一些字符串吗
    • @Piysuh 我显示为未定义,这是否意味着当我通过 RestClient 传递密码时没有传递给 api?
    • req.body 并不是您通过休息客户端传递的内容,我看到您使用的是正确的正文解析器。
    • 还要确保在您的请求标头中的其余客户端中,数据作为 application/json 发送这是唯一的问题
    猜你喜欢
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    • 2018-09-21
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    • 2017-07-28
    • 1970-01-01
    相关资源
    最近更新 更多