2017-07-06 31 views
1

我會開始說,我不知道這是否是問題,但它可能是(希望)。Expressios promisify with axios

我正在使用axios將數據發佈到API。

數據成功發佈,但從未獲取.then函數。即:

createPage(page) { 
    instance.post('/admin/createPage',page).then((response) => { 
     console.log(response) <------- Never gets to. 
    }).catch((error) => { 
     console.log(error) 
    }) 
    } 

我沒有得到console.log(響應)。

我最終增加了'es6-promisify',但是我該如何設置呢?

僅供參考,這裏有重要的文件:

server.js:

import express from 'express' 
import session from 'express-session' 
import bodyParser from 'body-parser' 
import promisify from 'es6-promisify' 
import cors from 'cors' 
import low from 'lowdb' 
import fileAsync from 'lowdb/lib/storages/file-async' 

import { initDb } from './db/index.js' 
import routes from './routes/index.js' 

const app = express(); 

const db = low('./core/db/.index.json', { storage: fileAsync }) 

app.use(cors()) 

app.set('db', db); 

app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: true })); 

app.use((req,res, next) => { 
    next(); 
}); 

app.use('/', routes); 

app.set('port', process.env.PORT || 1337); 

if(!db.has('pages').value()) { 
    initDb(db); 
} 



const server = app.listen(app.get('port'),() => { 
    console.log(`Express running → PORT ${server.address().port}`); 
}); 

app.js:

import React, { Component } from 'react'; 
import { 
    BrowserRouter as Router, 
    Route 
} from 'react-router-dom' 
import axios from 'axios' 

import Header from '../components/Header' 

import Dashboard from './Dashboard' 
import AddEditPage from './AddEditPage' 

const instance = axios.create({baseURL: 'http://localhost:1337'}) 



class App extends Component { 
    constructor(props) { 
    super(props); 
    this.state = { 
     "pages": [] 
    } 
    this.createPage = this.createPage.bind(this) 
    this.getPages = this.getPages.bind(this) 
    } 

    componentDidMount() { 
    this.getPages() 
    } 

    getPages() { 
    instance.get('/admin/listPages') 
     .then(
     (response) => { 
      this.setState(
      { 
       "pages": response.data 
      } 
     ) 
     }) 
     .catch((error) => {console.log(error)}) 
    } 

    createPage(page) { 
    instance.post('/admin/createPage',page).then((response) => { 
     console.log(response) 
    }).catch((error) => { 
     console.log(error) 
    }) 
    } 

    render() { 
    return (
     <Router> 
     <div className="Router"> 
      <div className="Navbar"> 
      <Header /> 
      </div> 
      <div className="Wrapper"> 
      <Route exact path="/" render={() => (
       <Dashboard pages={this.state.pages} /> 
      )} /> 
      <Route path="/admin/new-page" render={() => (
       <AddEditPage createPage={this.createPage} /> 
      )} /> 
      <Route path="/admin/edit-page/:id" render={() => (
       <AddEditPage /> 
      )} /> 
      </div> 
     </div> 
     </Router> 

    ); 
    } 
} 

export default App; 

回答

0

你沒有包括您./routes/index.js所以我們不」不知道你的實際路線是什麼,他們使用什麼請求處理程序,所以我們只能推測它,但你描述的是一個症狀,當你沒有從你的請求處理器。

舉例來說,如果你有這樣的:

router.post('/createPage', (req, res) => { 
    console.log(req.body); 
}); 

那麼你的請求將永遠掛(UTIL超時)。

如果返回響應:

router.post('/createPage', (req, res) => { 
    console.log(req.body); 
    res.json({ ok: true }); 
}); 

那麼這個請求應該結束並返回成功。

但是,當然你並沒有包括足夠的代碼來確定。