我使用node.js准备了一个测试程序,并在浏览器中提交请求。服务器可以成功启动并成功连接到数据库。但是,浏览器返回"无法POST"当我在表单中输入一些值并将其发布到localhost:3000 / api / signup时找不到404。谁能告诉我我的代码中的哪一部分出了问题?谢谢!
//server.js
var express = require('express');
var bodyParser = require('body-parser');
var morgan = require('morgan');
var config = require('./config');
var mongoose = require('mongoose');
mongoose.connect(config.database, function(err){
if(err){
console.log(err);
}else{
console.log('Connected to the database');
}
});
var app = express();
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
app.use(morgan('dev'));
var api = require('./app/routes/api')(app, express);
api.use('/api', api);
app.get('*', function(req,res){
res.sendFile(__dirname + '/public/views/index.html');
});
app.listen(config.port, function(err){
if(err){
console.log(err);
}else{
console.log("Listening on port 3000");
}
});

//user.js
var mongoose = require('mongoose');
var bcrypt = require('bcrypt-nodejs');
var Schema = mongoose.Schema;
var UserSchema = new Schema({
name: String,
username: {type: String, required: false, index: {unique: true}},
password: {type: String, required: true, select: false}
});
UserSchema.pre('save', function(next){
var user = this;
if(!user.isModified('password')){
return next();
}
bcrypt.hash(user.password, null, null, function(err, hash){
if(err){
return next(err);
}
user.password = hash;
next();
});
});
UserSchema.methods.comparePassword = function(password){
var user = this;
return bcrypt.compareSync(password,user.password);
}
module.exports = mongoose.model('User', UserSchema);

答案 0 :(得分:1)
您没有任何POST
处理程序。这一行......
app.get('*', function(req,res){
...仅处理GET
个请求。您可以将其更改为app.all(..)
(我在测试期间仅推荐),或者创建app.post(...)
处理程序。
有关如何为各种HTTP谓词创建处理程序的详细信息,请参阅文档here。