변경하려고합니다. findTitleLatestRev은 node.js에서 람다로 작동합니다. mongoose에서 스키마의 메서드를 정의하는 데 사용됩니다. 하기 전에 :node.js에서 람다를 사용하면 작동하지 않습니다.
RevisionSchema.statics.findTitleLatestRev = function(title, callback){
return this.find({'title':title})
.sort({'timestamp':-1})
.limit(1)
.exec(callback);
};
에서 전화를 :
module.exports.getLatest=function(req,res){
let title = req.query.title;
Revision.findTitleLatestRev(title, (err,result)=>{
if (err) console.log('Cannot find ' + title + "'s latest revision!");
console.log(result);
revision = result[0];
res.render('revision.pug',{title: title, revision:revision});
});
};
변경하기 전에, 그것은 잘 작동 않습니다. 오류의 원인이 그
`RevisionSchema.statics.findTitleLatestRev = (title, callback)=>
{this.find({'title':title})
.sort({'timestamp':-1})
.limit(1).
exec(callback)};`
: 내가로 변경
`TypeError: this.find is not a function
at Function.RevisionSchema.statics.findTitleLatestRev (/home/tung/Documents/node/nodejs-labs/app/models/revision.js:25:8)
at module.exports.getLatest (/home/tung/Documents/node/nodejs-labs/app/controllers/revision.server.controller.js:24:14)
at Layer.handle [as handle_request] (/home/tung/Documents/node/nodejs-labs/node_modules/express/lib/router/layer.js:95:5)
at next (/home/tung/Documents/node/nodejs-labs/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/home/tung/Documents/node/nodejs-labs/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/home/tung/Documents/node/nodejs-labs/node_modules/express/lib/router/layer.js:95:5)
at /home/tung/Documents/node/nodejs-labs/node_modules/express/lib/router/index.js:281:22
at Function.process_params (/home/tung/Documents/node/nodejs-labs/node_modules/express/lib/router/index.js:335:12)
at next (/home/tung/Documents/node/nodejs-labs/node_modules/express/lib/router/index.js:275:10)
at Function.handle (/home/tung/Documents/node/nodejs-labs/node_modules/express/lib/router/index.js:174:3)
at router (/home/tung/Documents/node/nodejs-labs/node_modules/express/lib/router/index.js:47:12)
at Layer.handle [as handle_request] (/home/tung/Documents/node/nodejs-labs/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/home/tung/Documents/node/nodejs-labs/node_modules/express/lib/router/index.js:317:13)
at /home/tung/Documents/node/nodejs-labs/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/home/tung/Documents/node/nodejs-labs/node_modules/express/lib/router/index.js:335:12)
at next (/home/tung/Documents/node/nodejs-labs/node_modules/express/lib/router/index.js:275:10
)를`
어디에서 찾을 수 있습니까? 전체 수업을 붙여 줄 수 있습니까? 찾기가 몽구스 방법이라면 그것은 효과가 없습니다. – kimy82
'findTitleLatestRev'함수는 몽구스 모듈에서 스키마 메소드를 정의하는 데 사용됩니다. 'find'는 mongoose 또는 mongoDB의 메소드입니다. –
예. 그러나 람다를 사용할 때 'this'는 정적 인 스키마를 정의한 클래스가 될 것입니다. 람다를 사용하고 싶다면 'this'를 _this.revisionModel.find (... – kimy82