Javascript 猫鼬的打字错误

Javascript 猫鼬的打字错误,javascript,mongodb,express,mongoose,typescript,Javascript,Mongodb,Express,Mongoose,Typescript,我制作了一个express应用程序,里面有一个叫做users的应用程序。我正在使用打字脚本。这就是我的app.js文件的外观: ///<reference path='d.ts/DefinitelyTyped/node/node.d.ts' /> ///<reference path='d.ts/DefinitelyTyped/express/express.d.ts' /> ///<reference path='routes/Users.ts' /> i

我制作了一个express应用程序,里面有一个叫做users的应用程序。我正在使用打字脚本。这就是我的app.js文件的外观:

///<reference path='d.ts/DefinitelyTyped/node/node.d.ts' />
///<reference path='d.ts/DefinitelyTyped/express/express.d.ts' />
///<reference path='routes/Users.ts' />

import express = require("express");
import http = require("http");
import path = require("path");
import us = require("./routes/Users");

var app = express();

// all environments
app.set('port', 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.set('env', 'development');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(require('less-middleware')({ src: __dirname + '/public' }));
app.use(express.static(path.join(__dirname, 'public')));

// development only
if ('development' == app.get('env')) {
    app.use(express.errorHandler());
}

app.get('/', (req, res) => {
    res.render("index", {
        title: "Express Main Page"
    });
});


// Users app
app.use(us.Users.users);

http.createServer(app).listen(app.get('port'), () => {
    console.log('Express server listening on port ' + app.get('port'));
});
/// <reference path='../d.ts/DefinitelyTyped/node/node.d.ts' />
/// <reference path='../d.ts/DefinitelyTyped/express/express.d.ts' />
/// <reference path='../d.ts/DefinitelyTyped/mongoose/mongoose.d.ts' />

import express = require("express");
import mongoose = require("mongoose");
mongoose.connect("mongodb://localhost/SimpleBlog");

export module Users {

    // Exporting information about the user class
    export var users: Express = express();
    export var base_URL: string = "/users";

    // Making Schemas
    var UserSchema = new mongoose.Schema({
        email: String,
        name: String,
        age: Number
    });

    // Attaining users
    var db_Users = mongoose.model('Users', UserSchema);

    var list;
    db_Users.find({}, (err, docs) => {
        list = docs;
        console.log(docs);
    });

    // Route for base url
    users.get(base_URL, (req, res) => {
        res.render("Users/index", {
            title: "User List",
            user_list: list
        });
    });


    // Route for POST request
    users.post(base_URL + "/add", (req, res) => {

        try {
            console.log(req.body['name']);

            new UserSchema({
                name: req.body['name'],
                email: req.body['email'],
                age: req.body['age']
            }).save(function (err, docs) {
                    if (err) { console.log(err); }
                });
        } catch (Exception) {
            console.log(Exception);
        }
        res.redirect(base_URL);
    });

    users.get(base_URL + "/add", (req, res) => {
        res.render("Users/add", {});
    });

}
///
///
///
进口快递=要求(“快递”);
导入http=require(“http”);
导入路径=需要(“路径”);
进口美国=需要(“/路线/用户”);
var-app=express();
//所有环境
应用程序集('端口',3000);
app.set('views','u dirname+'/views');
应用程序集(“查看引擎”、“翡翠”);
应用程序集(“环境”、“开发”);
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
应用程序使用(应用程序路由器);
使用(require('less-middleware')({src:u dirname+'/public'}));
app.use(express.static(path.join(uu dirname,'public'));
//仅限开发
if('development'==app.get('env')){
app.use(express.errorHandler());
}
应用程序获取(“/”,(请求,请求)=>{
res.render(“索引”{
标题:“快速主页”
});
});
//用户应用程序
应用程序使用(美国用户);
http.createServer(app.listen(app.get('port'),()=>{
console.log('Express server监听端口'+app.get('port'));
});
现在的问题是,我正在使用mongoose来存储一些数据,我已经启动了mongodb。下面是Users.ts文件的外观:

///<reference path='d.ts/DefinitelyTyped/node/node.d.ts' />
///<reference path='d.ts/DefinitelyTyped/express/express.d.ts' />
///<reference path='routes/Users.ts' />

import express = require("express");
import http = require("http");
import path = require("path");
import us = require("./routes/Users");

var app = express();

// all environments
app.set('port', 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.set('env', 'development');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(require('less-middleware')({ src: __dirname + '/public' }));
app.use(express.static(path.join(__dirname, 'public')));

// development only
if ('development' == app.get('env')) {
    app.use(express.errorHandler());
}

app.get('/', (req, res) => {
    res.render("index", {
        title: "Express Main Page"
    });
});


// Users app
app.use(us.Users.users);

http.createServer(app).listen(app.get('port'), () => {
    console.log('Express server listening on port ' + app.get('port'));
});
/// <reference path='../d.ts/DefinitelyTyped/node/node.d.ts' />
/// <reference path='../d.ts/DefinitelyTyped/express/express.d.ts' />
/// <reference path='../d.ts/DefinitelyTyped/mongoose/mongoose.d.ts' />

import express = require("express");
import mongoose = require("mongoose");
mongoose.connect("mongodb://localhost/SimpleBlog");

export module Users {

    // Exporting information about the user class
    export var users: Express = express();
    export var base_URL: string = "/users";

    // Making Schemas
    var UserSchema = new mongoose.Schema({
        email: String,
        name: String,
        age: Number
    });

    // Attaining users
    var db_Users = mongoose.model('Users', UserSchema);

    var list;
    db_Users.find({}, (err, docs) => {
        list = docs;
        console.log(docs);
    });

    // Route for base url
    users.get(base_URL, (req, res) => {
        res.render("Users/index", {
            title: "User List",
            user_list: list
        });
    });


    // Route for POST request
    users.post(base_URL + "/add", (req, res) => {

        try {
            console.log(req.body['name']);

            new UserSchema({
                name: req.body['name'],
                email: req.body['email'],
                age: req.body['age']
            }).save(function (err, docs) {
                    if (err) { console.log(err); }
                });
        } catch (Exception) {
            console.log(Exception);
        }
        res.redirect(base_URL);
    });

    users.get(base_URL + "/add", (req, res) => {
        res.render("Users/add", {});
    });

}
//
/// 
/// 
进口快递=要求(“快递”);
进口猫鼬=需要(“猫鼬”);
猫鼬。连接(“mongodb://localhost/SimpleBlog");
导出模块用户{
//导出有关用户类的信息
导出变量用户:Express=Express();
导出var base_URL:string=“/users”;
//制作模式
var UserSchema=newmongoose.Schema({
电子邮件:String,
名称:String,
年龄:数目
});
//获得用户
var db_Users=mongoose.model('Users',UserSchema);
var列表;
db_Users.find({},(err,docs)=>{
列表=文档;
console.log(文档);
});
//基本url的路由
users.get(基本URL,(请求,res)=>{
res.render(“用户/索引”{
标题:“用户列表”,
用户列表:列表
});
});
//投递路线
user.post(基本URL+“/add”,(请求、回复)=>{
试一试{
console.log(请求主体['name']);
新用户模式({
名称:请求正文['name'],
电子邮件:请求正文['email'],
年龄:要求正文[“年龄”]
}).save(函数(错误、文档){
if(err){console.log(err);}
});
}捕获(例外){
console.log(异常);
}
res.redirect(基本URL);
});
users.get(基本URL+“/add”,(请求、回复)=>{
res.render(“Users/add”,{});
});
}
当我试图保存时,我得到了
[TypeError:object不是函数]
作为错误

users/add
simple为用户提供了一个注册表单,这是在一个jade文件中完成的。我还可以证明
express.bodyParser()
没有问题,因为
console.log(req.body['name')正确打印post请求的名称


任何关于这方面的帮助都会很有帮助。

您的语法对于Mongoose不正确

关于这一行:

// Attaining users
var db_Users = mongoose.model('Users', UserSchema);
该行返回一个
模型
函数/。您将使用该结果创建
用户的实例。考虑到您现在拥有的所有用户/UserSchema/User名称空间,这有点令人困惑,因此我将切换它:

// Attaining users
var UserModel = mongoose.model('User', UserSchema);
看起来类代表的是用户,而不是用户

当您想要创建用户实例时,您应该创建
UserModel
类的实例,而不是模式:

new UserModel({
    name: req.body['name'],
    email: req.body['email'],
    age: req.body['age']
}).save(function (err, docs) {
        if (err) { console.log(err); }
});

您可能想更低级一些:毕竟它只是json?非常感谢。我已经做了一段时间了。我真不敢相信这个错误竟然那么愚蠢。