2016-03-18 30 views
0

我想从使用Jquery Ajax调用的响应前端提交请求。然而,我对app.post的任何尝试似乎都没有实际发送数据到数据库。如果有什么事情我刚刚得到一个空{}的 “完成发送”Mongodb React节点传递POST请求失败

代码: Server.js

app.post('/api/users', function(req, res) { 
    var name = req.body.name; 
    var gender = req.body.gender; 
users.findOne({ users : users.name }, function(err, users) { 
if (err) return next(err); 
users.save(function(err) { 
    if (err) return next(err); 
    res.send({ message: users.name + ' has been added' }); 
}); 
}); 
}); 

代码: 型号/ model.js

var mongoose = require('mongoose'); 

var userSchema = new mongoose.Schema({ 
name: { 
    first: String, 
    last: String 
}, 
    email: String, 
    gender: String, 
    school: String, 
    updated_at: {type: Date, default: Date.now}, 
}); 

module.exports = mongoose.model('User', userSchema); 

代码:

反应动作文件: app/action/
class AddCharacterActions { 
constructor() { 
this.generateActions(
    'addCharacterSuccess', 
    'addCharacterFail', 
    'updateName', 
    'updateGender', 
    'invalidName', 
    'invalidGender' 
); 
} 

addCharacter(name, gender) { 
$.ajax({ 
    type: 'POST', 
    url: '/api/users', 
    data: { name: name, gender: gender } 
}) 
    .done((data) => { 
    this.actions.addCharacterSuccess(data.message); 
    }) 
    .fail((jqXhr) => { 
    this.actions.addCharacterFail(jqXhr.responseJSON.message); 
    }); 
    } 
} 

export default alt.createActions(AddCharacterActions); 

阵营控制器:

应用程序/控制器/ userController.js

class AddCharacter extends React.Component { 
constructor(props) { 
super(props); 
this.state = AddCharacterStore.getState(); 
this.onChange = this.onChange.bind(this); 
} 

componentDidMount() { 
AddCharacterStore.listen(this.onChange); 
} 

componentWillUnmount() { 
AddCharacterStore.unlisten(this.onChange); 
} 

onChange(state) { 
this.setState(state); 
} 

handleSubmit(event) { 
event.preventDefault(); 

var name = this.state.name.trim(); 
var gender = this.state.gender; 

if (!name) { 
    AddCharacterActions.invalidName(); 
    this.refs.nameTextField.getDOMNode().focus(); 
} 

if (!gender) { 
    AddCharacterActions.invalidGender(); 
} 

if (name && gender) { 
    AddCharacterActions.addCharacter(name, gender); 
} 
} 

我似乎无法找出在我的错误发生,虽然我有心想准是其由于我server.js app.post文件。谢谢

+1

你的服务器(server.js)在哪里运行,你得到了什么确切的错误以及错误是在哪里触发的? – piscator

+0

server.js在根上运行,我没有收到错误,在控制台上获得状态200,并在前端读取“成功”。 – JFBadams

回答

0

看起来你不是在你的Server.js中定义用户。除非在您发布的代码之外定义,否则您的users.name未定义。 users.findOne({ users : users.name },...应该是users.findOne({users: name}, ...