对象功能路由器(req,res,next){router.handle(req,res,next);没有方法

时间:2016-11-13 23:28:42

标签: javascript node.js express

我只想在mysql数据库中插入一行。我已经安装了护照和hjs.I我只是将表单的值从app.js发送到js文件,然后我想插入数据。但是显示错误消息:

Object function router(req, res, next) { router.handle(req, res, next); } 
has no method 'addUser'

我的app.js代码

SQL驱动程序

var db = require('./db');

配置Passport

var passport = require('passport');
var Strategy = require('passport-local').Strategy;

我想要执行操作的路线

var add = require('./routes/dosignup');

app.post('/dosignup', function(req, res, next) { 
  add.addUser(req.body);
  res.redirect('/');
});

位于路线文件夹中的dosignup页面。

var express = require('express');
var router = express.Router();
var db = require('./db');

var addUser = {};

exports.addUser = function(usr){
    console.log(usr);
    var details = {
        title: usr.title,
        firstname: usr.firstname
    };

    db.query('INSERT into  `users` SET ?', details, function (err, result) {
        if (err)
            throw err;
        console.log(' The value inserted. ');
    });
};

module.exports = router;

1 个答案:

答案 0 :(得分:2)

问题在于最后一行:

module.exports = router;

您正在将addUser函数分配给exports对象,但之后使用此行覆盖它并返回router

从它的外观来看,你不需要dosignup中的路由器或任何明确相关的东西,所以你可以删除它。但是,如果您确实需要某些未出现在此处的部分,请按照与addUser相同的方式返回它:

exports.router = router;

这样返回的对象将同时包含routeraddUser