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

问题描述 投票:0回答:1

只是一个基本问题。

以下代码成功返回任务:

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;

有人知道解决它吗?

node.js express mongojs
1个回答
0
投票

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

module.exports = {
    ReadAllTasks: (callback)=>{
        db.tasks.find(function(err, tasks) {
            if (err) {
                callback(err, null);
            }
            callback(null, tasks);
        });
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.