Nodejs中间件.pre显示不是一个函数

Vig*_*esh 0 mongoose mongodb node.js

    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!"));
            }
        })
    })
Run Code Online (Sandbox Code Playgroud)

推荐是分配给我的模式的变量。类别列表是对象

这给出了一个错误

TypeError:categoryList.pre 不是 D:\Aventyn\ClipCare_v2\app\api.js:112:18 处的函数,位于 Layer.handle [作为 handle_request] (D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\ layer.js:95:5) 在下一个 (D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\route.js:131:13) 在 Route.dispatch (D:\Aventyn\ClipCare_v2\node_modules\express\ lib\router\route.js:112:3) 在 Layer.handle [作为 handle_request] (D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\layer.js:95:5) 在 D:\Aventyn\ ClipCare_v2\node_modules\express\lib\router\index.js:277:22 位于 Function.process_params (D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\index.js:330:12) 下一个 (D: \Aventyn\ClipCare_v2\node_modules\express\lib\router\index.js:271:10) 在 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) 位于 Layer.handle [作为 handle_request] (D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\layer .js:95:5) 在trim_prefix (D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\index.js:312:13) 在D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\index .js:280:7 在 Function.process_params (D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\index.js:330:12) 在下一个 (D:\Aventyn\ClipCare_v2\node_modules\express\lib\路由器\index.js:271:10) 位于 D:\Aventyn\ClipCare_v2\node_modules\express\lib\router\index.js:618:15

rsp*_*rsp 5

尝试改变:

categoryList.pre('save', function (next) {
  // ...
})
Run Code Online (Sandbox Code Playgroud)

到:

categoryList.schema.pre('save', function (next) {
  // ...
})
Run Code Online (Sandbox Code Playgroud)

.pre()是 Mongoose 模式的一种方法,而不是模型。