试图创建一个函数nodejs表达

时间:2015-06-26 12:14:23

标签: javascript node.js mongoose

我试图创建一个函数,所以我不会一次又一次地使用相同的代码,但我一直得到内部错误。我得到数据,然后我得到内部错误,所以如果我改变一些我需要刷新页面是更新。我不明白为什么我得到错误。这是错误

获取http://localhost:3000/api/pages 500(内部服务器错误)

Object {data:"",status:500,config:Object,statusText:" Internal Server Error"}

代码:

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);
});

3 个答案:

答案 0 :(得分:0)

如果您使用express,您的函数调用应该是:

  function someGetFunc(req, res, next)

你有res作为第三个参数,所以这可能是问题。

现在你上面的Get函数是一个不接受params的匿名函数的内部函数,所以你传递给它的是未定义或引用全局作用域变量。

答案 1 :(得分:0)

路由器。 METHOD 将首先调用您的函数 sessionCheck 。然后,您需要在 sessionCheck 中调用next()来调用下一个函数,在该函数中您没有定义任何参数(通常您将定义 req,res )。 / p>

答案 2 :(得分:0)

好吧我修理它就像我不应该把功能留空所需的res,req

new Timer().scheduleAtFixedRate(new TimerTask() {
                @Override
                public void run() {
 // Enter your code
}
            }, 0, 20000);//put here time 1000 milliseconds=1 second