I'm having trouble getting info from my own database through axios. I have no problems getting it through express router and have no problems downloading data from other public APIs, tested on pokeapi.co/api/v2... . Here's the code:
const express = require('express');
const router = express.Router();
const app = express();
const cors = require('cors');
const bodyParser = require('body-parser');
const axios = require('axios');
const monk = require('monk');
const db = require('monk')('localhost/fitness-log');
const users = db.get('users');
app.use(cors());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.use('/api/v1', router);
/*
router.get('/listusers', (req, res) => {
users.find()
.then(users => res.json(users))
});
*/
axios.get('http://localhost:3001/api/v1/listusers')
.then(res => users.find())
.catch(console.error)
/*
axios.post('localhost:3001/api/v1/adduser')
.then(res => res.data)
.then(user => users.insert(user))
.catch(console.error)
/*
router.post('/adduser', (req, res) => {
users.insert(req.body, (err, result) => {
res.send(
(err === null) ? { msg: req.body } : { msg: err }
);
});
});
*/
router.delete('/deleteuser/:nickname', (req, res) => {
users.remove({ 'nickname' : req.params.nickname }, err => {
res.send((err === null) ? { msg: '' } : { msg: 'error: ' + err});
});
});
/* axios.get('/listusers')
.then(res => {
users.find({}, {fields: ['_id','nickname']})
})
.then(users => res.json(users))
.catch(console.error);
axios.post('/adduser')
.then(res => res.data)
.then(res => users.insert(res))
.catch(console.error);
*/
app.listen(3001, () => console.log("Server running at 3001"));
And the errors depending on which addresses I use (http:192.168.0.248:3001/api/v1/listusers or localhost:3001/api/v1/listusers or just /listusers:
Server running at 3001
(node:5934) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): Error: Request failed with status code 404
Second:
Server running at 3001
{ Error: connect EINVAL 0.0.11.185:80 - Local (0.0.0.0:0)
at Object.exports._errnoException (util.js:1018:11)
at exports._exceptionWithHostPort (util.js:1041:20)
at connect (net.js:880:16)
at net.js:1009:7
at GetAddrInfoReqWrap.asyncCallback [as callback] (dns.js:62:16)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:81:10)
code: 'EINVAL',
errno: 'EINVAL',
syscall: 'connect',
address: '0.0.11.185',
port: 80,
config:
{ adapter: [Function: httpAdapter],
transformRequest: { '0': [Function: transformRequest] },
transformResponse: { '0': [Function: transformResponse] },
timeout: 0,
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
validateStatus: [Function: validateStatus],
headers:
{ Accept: 'application/json, text/plain, */*',
'Content-Type': 'application/x-www-form-urlencoded',
'User-Agent': 'axios/0.16.1' },
method: 'post',
url: 'localhost:3001/api/v1/adduser',
data: undefined },
response: undefined }
Third:
Server running at 3001
{ Error: Request failed with status code 404
at createError (/home/mmsmsy/nodejs/fitness-log-backend/node_modules/axios/lib/core/createError.js:15:15)
at settle (/home/mmsmsy/nodejs/fitness-log-backend/node_modules/axios/lib/core/settle.js:18:12)
at IncomingMessage.handleStreamEnd (/home/mmsmsy/nodejs/fitness-log-backend/node_modules/axios/lib/adapters/http.js:191:11)
at emitNone (events.js:91:20)
at IncomingMessage.emit (events.js:185:7)
at endReadableNT (_stream_readable.js:974:12)
at _combinedTickCallback (internal/process/next_tick.js:80:11)
at process._tickCallback (internal/process/next_tick.js:104:9)
config:
{ adapter: [Function: httpAdapter],
transformRequest: { '0': [Function: transformRequest] },
transformResponse: { '0': [Function: transformResponse] },
timeout: 0,
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
validateStatus: [Function: validateStatus],
headers:
{ Accept: 'application/json, text/plain, */*',
'Content-Type': 'application/x-www-form-urlencoded',
'User-Agent': 'axios/0.16.1' },
method: 'post',
url: 'http://192.168.0.248:3001/api/v1/adduser',
data: undefined },
response:
{ status: 404,
statusText: 'Not Found',
headers:
{ 'x-powered-by': 'Express',
'access-control-allow-origin': '*',
'content-security-policy': 'default-src \'self\'',
'x-content-type-options': 'nosniff',
'content-type': 'text/html; charset=utf-8',
'content-length': '154',
date: 'Thu, 25 May 2017 13:10:46 GMT',
connection: 'close' },
config:
{ adapter: [Function: httpAdapter],
transformRequest: [Object],
transformResponse: [Object],
timeout: 0,
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
validateStatus: [Function: validateStatus],
headers: [Object],
method: 'post',
url: 'http://192.168.0.248:3001/api/v1/adduser',
data: undefined },
request:
ClientRequest {
domain: null,
_events: [Object],
_eventsCount: 5,
_maxListeners: undefined,
output: [],
outputEncodings: [],
outputCallbacks: [],
outputSize: 0,
writable: true,
_last: true,
upgrading: false,
chunkedEncoding: false,
shouldKeepAlive: false,
useChunkedEncodingByDefault: true,
sendDate: false,
_removedHeader: {},
_contentLength: 0,
_hasBody: true,
_trailer: '',
finished: true,
_headerSent: true,
socket: [Object],
connection: [Object],
_header: 'POST /api/v1/adduser HTTP/1.1\r\nAccept: application/json, text/plain, */*\r\nContent-Type: application/x-www-form-urlencoded\r\nUser-Agent: axios/0.16.1\r\nHost: 192.168.0.248:3001\r\nConnection: close\r\nContent-Length: 0\r\n\r\n',
_headers: [Object],
_headerNames: [Object],
_onPendingData: null,
agent: [Object],
socketPath: undefined,
timeout: undefined,
method: 'POST',
path: '/api/v1/adduser',
_ended: true,
_redirectable: [Object],
parser: null,
res: [Object] },
data: '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot POST /api/v1/adduser</pre>\n</body>\n</html>\n' } }
via Mateusz Mysiak
No comments:
Post a Comment