繁体   English   中英

尝试创建一个功能node.js express

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM