使用typescript和mongoose:我读了一点阅读,不知道发生了什么事...我正在添加mongoose中间件来定制重复的错误消息,但回调的参数没有类型化。正如你在下面看到的,我必须强制any类型来解决隐式的any错误。
// Define Schema...
// Then call this:
ProductSchema.post("save", function (error: any, doc: any, next: any) {
if (error.code === 11000 && error.name === "MongoServerError") {
next(
new ApolloError(
"A product with this name, category, and subcategory already exists. Please add it to your kit instead of creating it.",
"DUPLICATE_PRODUCT"
)
);
} else {
next();
}
});
// I then call the .model() method after this
我试过用Query传递泛型,ProductSchema.post<Query<Product, Product>>(...)
如果我删除doc
参数,那么错误就会留下,但代码不会在重复的文档上执行。
任何建议将是伟大的!如果可能的话我想把它打出来!谢谢你的帮助。
1条答案
按热度按时间7rfyedvj1#
我也遇到过类似的问题,虽然这个答案有点晚,但可以为其他人保存时间:
在Mongoose 6.8以上的版本中,您可以将
{ errorHandler: true }
添加到“help TypeScript out”和error:any
以跳过Property 'code' does not exist on type 'NativeError'
错误。最后,“unique”不是Mongoose中的验证器,一个问题是它需要一个字段索引来处理文档。因此,在模型中,可以添加
ProductSchema.index({ "name": 1, "category": 1, "subcategory": 1}, { "unique": true });