【发布时间】:2017-01-15 12:02:23
【问题描述】:
我有一个 ReactJS 和 Redux 连接到 MongoDB,Mongoose。
我有一个 Mongoose Schema (user.js) 设置如下:
var UserSchema = new Schema({
email: {
type: String,
lowercase: true,
unique: true,
required: true
},
})
还有一个API控制器,接收到email字符串请求,然后如果在文本字段中没有输入,它会发送422错误,而在User.findOne里面,如果email已经存在于数据库中,那么它会抛出一个422 错误,如果没有,user.save 是否将其保存在数据库中。
"use strict";
const User = require('../models/user')
exports.register = function(req, res, next) {
const email = req.body.email;
console.log('ERROR 1')
if(!email) {
return res.status(422).send({ error: 'You must enter an email address.'})
console.log('ERROR 1')
}
User.findOne({ email: email }, function(err, existingUser) {
if(err) { return next(err); }
console.log('ERROR 2')
if(existingUser) {
return res.status(422).send({ error: 'That email address is already in use.'})
}
console.log('ERROR 3')
let user = new User({
email: email,
})
console.log('ERROR 4')
user.save(function(err, user) {
if(err) { return next(err); }
console.log('ERROR 5')
res.status(201).json({
user: user,
})
})
})
console.log('ERROR 6')
}
我正在发出这样的 POST 请求:
export function registerUser({ email }) {
return function(dispatch) {
axios.post(`${API_URL}/auth/register`, { email })
.then(response => {
console.log('THIS IS TESTING PURPOSE')
console.log(response)
dispatch({ type: AUTH_USER });
})
.catch((error) => {
errorHandler(dispatch, error.response, AUTH_ERROR)
});
}
}
我发出了几个 POST 请求,所有请求都从 API 返回成功状态,服务器配置为:{'database': 'mongodb://localhost/practicedb',
'port': process.env.PORT || 3000},但数据从未保存,并且数据库 (practicedb) 未显示在终端上。
一切似乎都设置正确,但为什么会出现问题?我会错过什么吗?任何见解或指导将不胜感激。
提前谢谢你!
以下是一些日志以及我从未提出过的 OPTIONS 请求:
【问题讨论】:
-
OPTIONS 请求可能由您使用的请求/AJAX 插件自动完成。或者它可能是由浏览器完成的。这很正常。
-
@Noah Hm 那么数据没有保存到数据库中可能是什么问题?一切似乎都设置正确。
-
是否为了简洁而省略了
var mongoose = require('mongoose'); var Schema = mongoose.Schema;? -
@MarcelDjaman 如果您指的是
user.js,那么是的并且已经定义了它们。 -
@Noah 有什么想法吗?仍然没有运气
标签: javascript node.js mongodb reactjs mongoose