奇怪的error “CastError: Cast to String failed for value”
设计api的时候遇到了一个奇怪的错误 代码如下:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const CategorySchema = new Schema({
store : {type: String, required: true, unique: true},
categories : [{
parent : String,
name : String,
}],
}, {
timestamps: false,
});
CategorySchema.index({store: 1});
module.exports = mongoose.model('Category', CategorySchema);
建模好了之后储存没问题,但是查询的时候就出现了如下错误
(node:15444) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): ValidationError: CastError: Cast to String failed for value "{ _id: 58dd019b1a06731b0990b878,
store: 'OZ-Mobile-trader',
categories: [],
__v: 0 }" at path "store"
查询语句如下:
Category.findOne({store: 'OZ-Mobile-trader'}).exec().then(result => {
console.log(result);
return res.status(200).json({'message': result});
}, err => next(err));
如果把‘OZ-Mobile-trader’换成数据库里没有的,就没有error,直接输出null,但是只要查询有的或者查询所有数据,result就输出不出来,直接出来上面的error message. 我也有建相似的数据模型,别的都没问题,只有这个不好用,希望有大神可以棒棒忙~ 谢谢大家
2 回复
原因是没有处理 Promise 的 rejection,试试下面的代码
Category.findOne({store: 'OZ-Mobile-trader'}).exec()
.then(result => {
console.log(result);
return res.status(200).json({'message': result});
})
.catch(err => next(err));
@jpuncle 没用…应该不是那个原因,这个error我搜索过,就是cache不到,主要是后面那个CastError,不明白是什么原因造成的