0

I know that I am connecting to 'routes/dropbox' When I call the post inside the router, I get the error "Route.post() requires a callback function but got a [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 You can see that I my app.post is set up inside router. The error is occurring when I call that post. Did I write this incorrectly?

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;
Whelandrew
  • 195
  • 10

1 Answers1

0

app is a local express instance. app.post is setting up a local handler for a post request, similar to router.post would.

Use a http client library like 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);
  });
Matt
  • 68,711
  • 7
  • 155
  • 158
  • Hi Mate, Could you please me with my question here, much appreciated https://stackoverflow.com/questions/61407393/while-running-the-script-throws-cannot-find-module-dotenv – soccerway Apr 25 '20 at 09:09