【问题标题】:Post inside router get requires a callback function but got a [object Object]在路由器内部发布 get 需要一个回调函数,但得到一个 [object Object]
【发布时间】:2020-08-07 11:28:26
【问题描述】:

我知道我正在连接到 'routes/dropbox' 当我在路由器内部调用帖子时,我收到错误“Route.post() 需要回调函数但得到一个 [object Object]”

App.js

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var helmet = require('helmet');
var cors = require('cors');

var indexRouter     = require('./routes/index');
var usersRouter     = require('./routes/users');
var authRouter      = require('./routes/auth');
var dbRouter        = require('./routes/dropbox');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.use(logger('combined'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(helmet());
app.use(cors());

app.use('/', indexRouter);
app.use('/users', usersRouter);
app.use('/auth', authRouter);
app.use('/db', dbRouter);

dropbox.js 您可以看到我的 app.post 设置在路由器内部。当我打电话给那个帖子时,错误正在发生。我是不是写错了?

var express = require('express');
var router = express.Router();
const dotenv = require('dotenv');
dotenv.config();

var app = express();

router.get('/getAllFolders', function (request, response, next)
{       
        app.post('https://api.dropboxapi.com/2/files/list_folder',
        {
            headers: 
            {
                'Content-Type' : 'application/json', 
                'Authorization' : process.env.DB_AUTH
            },
            data: 
            {
                'path': '',
                'recursive': false,
                'include_media_info': false,
                'include_deleted': false,
                'include_has_explicit_shared_members': false,
                'include_mounted_folders': true,
                'include_non_downloadable_files': false
            }
        })
        .then(function (r) 
        {
            res.send(r);        
        })
        .catch(function (e) 
        {       
            res.send(e);
        }); 

}); 

module.exports = router;

【问题讨论】:

    标签: node.js express router


    【解决方案1】:

    app 是本地 express 实例。 app.post 正在为 post 请求设置本地处理程序,类似于 router.post 会。

    使用 http 客户端库,例如 axios

    const axios = require('axios');
    axios.post('https://api.dropboxapi.com/2/files/list_folder', data, options)
      .then(function (r) {
        res.send(r);
      })
      .catch(function (error) {
        res.status(500);
        res.send(error);
      });
    

    【讨论】:

    猜你喜欢
    • 2014-02-03
    • 2013-09-08
    • 2021-03-31
    • 2020-09-25
    • 1970-01-01
    • 1970-01-01
    • 2018-06-11
    • 2021-11-28
    • 2016-04-08
    相关资源
    最近更新 更多