[英]Trying to create a function nodejs express
我正在尝试创建一个函数,所以我一次又一次不使用相同的代码,但我不断收到内部错误。我得到数据,然后我得到内部错误,所以如果我更改某些内容,则需要刷新要更新的页面。无法理解为什么我会收到错误。这是错误
GET http:// localhost:3000 / api / pages 500(内部服务器错误)
对象{数据:“”,状态:500,配置:对象,状态文本:“内部服务器错误”}
码:
function Get(some,that,res){
return some.find(function(err,that) {
if (!err) {
return res.send(that);
} else {
return res.send(500, err);
}
});
};
router.get('/pages', sessionCheck, function() {
Get(Page,pages,res);
});
更新:我可能做错了什么,所以让我们从头开始做吧。我如何创建一个可以做到这一点的函数,这样我就不会一次又一次地重复使用相同的代码。
router.get('/pages', function(request, response) {
return Page.find(function(err, pages) {
if (!err) {
return response.send(pages);
} else {
return response.send(500, err);
}
});
});
这是我的完整代码
var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var Page= require('../models/page.js');
var bcrypt = require('bcrypt-nodejs');
function Get(some,that,response){
return some.find(function(that,err) {
if (!err) {
return response.send(that);
} else {
return response.send(500, err);
}
});
};
router.get('/pages', sessionCheck, function(request,response) {
Get(Page,pages,response);
});
如果您使用Express,则函数调用可能是:
function someGetFunc(req, res, next)
您将res作为第三个参数,因此可能是问题所在。
现在,您上面的Get函数位于不带参数的匿名函数的内部,因此您要传递给它的是未定义的或引用全局范围的变量。
路由器。 METHOD将首先调用您的函数sessionCheck 。 然后,您将需要在sessionCheck中调用next()来调用下一个函数,该函数中您未定义任何参数(通常将定义req,res )。
好的,我已将其修复,因为我不应该将该函数留空,否则它需要res,req
function Get(Some,that,res){
return Some.find(function(err,that) {
if (!err) {
return res.send(that);
} else {
return res.send(500, err);
}
});
};
router.get('/pages', sessionCheck,function(req,res) {
Get(Page,pages,res);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.