【发布时间】:2015-08-15 16:33:19
【问题描述】:
我正在使用 express 和 mongoose 将我的表单数据保存到我的 mongodb 数据库,但该操作无法正常工作,因为它给了我一个错误,即我的模型未注册。我的代码:
index.ejs
<!DOCTYPE html>
<html>
<head>
<title>Admin-Page</title>
</head>
<body>
<h1>admin-dashboard-interest</h1>
<form method="post" action="">
<label for="select1">min select:</label>
<select name="interest_active_user_min" id="select1">
<option value="1">1</option>
<option value="2">2</option>
</select>
<label for="select2">max select:</label>
<select name="interest_active_user_max" id="select2">
<option value="1">1</option>
<option value="2">2</option>
</select>
<input type="submit">
</form>
</body>
</html>
schema.js
var InterestSchema = new Schema({
settings: {
admin_settings: {
interest_settings: {
interest_pending_user_settings: {
type: Number,
max: 100,
default: 0
},
interest_pending_user_value: {
type:[String]
},
interest_active_user:{
type:Number,
max:1000,
default:0
},
interest_active_user_max: {
type: Number,
max:1000,
default:100
},
interest_active_user_min: {
type: Number,
max:1000,
default: 5
},
active_interest: [{
name: {
type:[String],
unique:true
},
creator: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
},
timestamp: {
type:Date,
default: Date.now
}
}],
pending_interest: [{
name: {
type:[String],
unique:true
},
creator: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
},
timestamp: {
type:Date,
default: Date.now
}
}],
declined_interest: [{
name: {
type:[String],
unique:true
},
creator: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
},
timestamp: {
type:Date,
default:Date.now
}
}],
removed_interest: [{
name: {
type:[String],
unique:true
},
creator: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
},
timestamp: {
type:Date,
default: Date.now
}
}]
}
}
}
});
var Int = mongoose.model('Interest', InterestSchema);
server.js
var mongoose = require('mongoose');
var express = require('express');
var app = express();
var port = process.env.PORT || 8080;
var morgan = require('morgan');
var bodyParser = require('body-parser');
var uri = 'mongodb://localhost/interest';
var db = require('mongoose').connect(uri);
app.use(morgan('dev'));
app.use(bodyParser.urlencoded({
extended: true
}));
app.set('view engine', 'ejs');
app.listen(port);
console.log('shit happens on port ' + port);
app.get('/', function(req,res){
res.render('index.ejs');
});
app.post('/', function(req,res){
var content = new Int(req.body.content);
content.save(function(err){
if(err){
return handleError(err);
} else {
console.log('your form has been saved');
}
})
});
require('./models/schema.js');
我收到一个错误“Int is not defined”,这是我用来注册我的猫鼬模型的变量。我还需要我的 server.js 中的猫鼬文件,所以我看不出哪里出错了。
【问题讨论】:
-
寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及重现它所需的最短代码在问题本身。没有明确的问题陈述的问题对其他读者没有用处。
-
另外,请不要使用sn-p,除非代码可以在浏览器中实际运行。
-
您既没有从 schema.js 导出 Int 模型,也没有在 server.js 中导入它。 Int 变量在 server.js 中不可用,除非您使用 require 导入它。
-
我确实需要('./models/schema.js') 这还不够吗?我还必须采取哪些步骤?
标签: javascript node.js mongodb express mongoose