Javascript 猫鼬的打字错误
我制作了一个express应用程序,里面有一个叫做users的应用程序。我正在使用打字脚本。这就是我的app.js文件的外观: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
///<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?非常感谢。我已经做了一段时间了。我真不敢相信这个错误竟然那么愚蠢。