var categoryList = new Referral({categoryList : category});
categoryList.pre('save', function (next) {
Referral.find({categoryList : category}, function (err, docs) {
if (!docs.length){
next();
}else{
console.log('Data exists: ', category);
next(new Error("Data exists!"));
}
})
})
引用是分配给我的架构的变量。categoryList是对象
这给出了一个错误
(D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\route.js:131:13):categoryList.pre不是D:\Aventyn\ClipCare_v2\app\api.js:112:18 at Layer.handle request at next D:\Aventyn\ClipCare_v2\app\api.js:112:18 at Route.dispatch,(D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\route.js:112:3) at Layer.handle request at D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\index.js:277:22 at Function.process_params (D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\index.js:330:12) at next (D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\index.js:271:10) at Function.handle (D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\index.js:176:3)路由器(D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\index.js:46:12) at Layer.handle request at trim_prefix (D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\index.js:312:13) at D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\index.js:280:7 at Function.process_params (D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\index.js:330:12) at next (D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\index.js:271:10) at D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\index.js:618:15
发布于 2016-09-27 04:39:52
试着改变:
categoryList.pre('save', function (next) {
// ...
})
至:
categoryList.schema.pre('save', function (next) {
// ...
})
.pre()
是猫鼬模式的一种方法,而不是模型。
发布于 2016-09-27 04:44:06
中间件(如pre
挂钩)是模式的一部分。看起来,您试图在单个文档上使用它,这不是它的工作方式。
相反,在用于创建Referral
模型的架构上使用它:
ReferralSchema.pre('save', ...);
这意味着预挂钩将应用于该模式的所有文档。
https://stackoverflow.com/questions/39724891
复制