【发布时间】:2018-10-10 00:20:39
【问题描述】:
拥有mongoose 架构,其中carNumber 应该是唯一的:
var Schema = mongoose.Schema({
createdAt: {
type: Date,
default: Date.now
},
carNumber: {
type: String, index: {unique: true, dropDups: true},
},
carOwner: String
});
用express控制器功能数据保存到db:
export const addCar = (req, res) => {
const newCar = new Car(req.body);
newCar.save((err, car) => {
if (err) {
return res.json({ 'success': false, 'message': 'Some Error' });
}
return res.json({ 'success': true, 'message': 'Car '+ car.carNumber +' added successfully', car });
})
}
但在尝试添加重复值时返回Unhandled Rejection (TypeError): Cannot read property 'carNumber' of undefined。为避免错误函数更新为验证undefined值:
export const addCar = (req, res) => {
const newCar = new Car(req.body);
newCar.save((err, car) => {
if (car.carNumber === undefined) {
return res.json({ 'success': false, '': 'Some Error' });
}
else {
return res.json({ 'success': true, 'message': 'Car '+ car.carNumber +' added successfully', car });
}
})
}
但是在前端 redux 操作中获得 Unhandled Rejection (SyntaxError): Unexpected token P in JSON at position 0 response.json().then(error => { ... }:
export const addNewCar = (car) => {
console.log(car)
return (dispatch) => {
dispatch(addNewCarRequest(car));
return fetch(apiUrl, {
method: 'post',
body: car,
}).then(response => {
if (response.ok) {
response.json().then(data => {
console.log(data.car);
dispatch(addNewCarRequestSuccess(data.car, data.message))
})
}
else {
response.json().then(error => {
dispatch(addNewCarRequestFailed(error))
})
}
})
}
}
感觉完全迷失在那里......可能有人陷入同样的问题吗?
【问题讨论】:
-
我认为您将
.then()链接到您的json()而不是您的fetch()。 -
@Colin 我应该使用
catch吗? -
是的,您需要将
.then()放在正确的位置,然后.catch()才能发现任何错误。 -
@Colin 你的意思是“正确”的地方?
-
我不明白。什么?
标签: mongodb reactjs express mongoose react-redux