使用单独的回调时未定义快速响应

时间:2018-03-06 05:36:52

标签: node.js express mongojs

只是一个基本问题。

以下代码成功返回任务:

const mongojs = require('mongojs');

const db = mongojs('localhost:27017/tasks', ['tasks']);

router.get('/tasks', function(req, res, next) {
    db.tasks.find(function(err, tasks) {
        if (err) {
            res.send(err);
        }
        if (tasks) {
            res.json(tasks);
        }
    });
});

但是,当我拆分它并将其称为回调时,它会返回:引用:任务未定义。

Repository.js:

const mongojs = require('mongojs');

const db = mongojs('localhost:27017/tasks', ['tasks']);

module.exports = {
    ReadAllTasks(callback) {
        db.tasks.find(function(err, tasks) {
            if (err) {
                callback(err, null);
            }
            callback(null, tasks);
        });
    }
}

Route.js:

const express = require('express');
const router = express.Router();

const repository = require('./repository');

router.get('/tasks', function(req, res, next) {
    repository.ReadAllTasks(function(err, tasks) {
        if (err) {
            res.send(err);
        }
        if (tasks) {
            res.json(tasks);
        }
    })
});

module.exports = router;

有人知道修理它吗?

1 个答案:

答案 0 :(得分:0)

试试这个,因为你没有返回有效的对象。

module.exports = {
    ReadAllTasks: (callback)=>{
        db.tasks.find(function(err, tasks) {
            if (err) {
                callback(err, null);
            }
            callback(null, tasks);
        });
    }
}