ExpressJs + RethinkDB API创建

时间:2017-05-10 09:46:33

标签: node.js reactjs express rethinkdb

我正在尝试创建一个将在我的前面使用的API 我使用ExpressJs作为NodeJS框架作为服务器,使用RethinkDB作为数据库。
我在执行 API 调用时遇到问题。每次API调用后,始终在我的控制台中收到消息。

错误Someone asked for the nonwhitelisted file "/users/". If this should be accessible, add it to the static web assets.

我的入口点server.js

'use strict'

const express = require( 'express' );
const logger = require( 'morgan' );
const bodyParser = require( 'body-parser' );
const cors = require( 'cors' );
const helmet = require( 'helmet' );
require( 'dotenv' ).config();

const app = express();

app.use( logger( 'dev' ) );
app.use( bodyParser.urlencoded( {
    extended: false
} ) );
app.use( bodyParser.json() );
app.use( cors() );
app.use( helmet() );

const users = require( './routes/users' );
const connect = require( './lib/connect' );

app.use( connect.connect );
app.use( '/users', users );
app.use( connect.close );

app.use( ( error, request, response, next ) => {
    response.status( error.status || 500 );
    response.json( {
        error: error.message
    } );
} );

app.use( ( request, response, next ) => {
    let error = new Error( 'Not Found' );
    error.status = 404;
    response.json( error );
} );

var server = app.listen( 3000, function() {
    var host = server.address().address;
    var port = server.address().port;

    console.log( 'App is listening on http://%s:%s', host, port );
} );

API路线。 server.js中用const users = require( './routes/users' );

app.use( '/users', users );的文件
'use strict';

const r = require('rethinkdb');
const router = require('express').Router();
const connect = require('../lib/connect');

router.post('/users',( request, response ) => {
    let user = Object.assign({},{
        'email': request.body.email,
        'name': request.body.name,
        'password': request.body.password
    });

    r.db('Planner').table('users')
        .insert( user )
        .run( request._rdb )
        .then( cursor => cursor.toArray() )
        .then( result => {
            response.send(result)
        })
        .catch( error => response.send( error ));
});

router.get( '/users', ( request, response ) => {
    r.db( 'auth' ).table( 'users' )
        .run( request._rdb )
        .then( cursor => cursor.toArray() )
        .then( result => {
            response.send( result );
        } )
        .catch( error => response.send( error ) );
} );

router.put( '/users/:user_id', ( request, response ) => {
    let user_id = request.params.user_id;

    r.db( 'auth' ).table( 'users' )
        .get( user_id )
        .update( {
            'email': request.body.email,
            'name': request.body.name
        } )
        .run( request._rdb )
        .then( cursor => cursor.toArray() )
        .then( result => {
            response.send( result );
        } )
        .catch( error => response.send( error ) );
} );

router.delete( '/users/:user_id', ( request, response ) => {
    let user_id = request.params.user_id;

    r.db( 'auth' ).table( 'users' )
        .get( user_id )
        .delete()
        .run( request._rdb )
        .then( cursor => cursor.toArray() )
        .then( result => {
            response.send( result );
        } )
        .catch( error => response.send( error ) );
} );

module.exports = router;

1 个答案:

答案 0 :(得分:0)

找到了解决方案。

  1. 将数据库端口更改为import numpy as np import matplotlib.pyplot as plt import pandas as pd # grab data df = pd.read_csv('sensor_data.csv') position = df.Counter status = df.Value # determine fraction on; # I will use bincount for this, which only accepts positive arguments min_pos = position.min() position -= min_pos # determine fraction on counts_on = np.bincount(position[status==1], minlength=position.max()+1) counts_all = np.bincount(position, minlength=position.max()+1) fraction_on = counts_on.astype(float) / counts_all # plot x = np.arange(min_pos, position.max()+1+min_pos) fig, ax = plt.subplots(1,1) ax.bar(x-0.5, fraction_on, width=1., facecolor='gray', edgecolor=None) ax.set_xlabel('Distance') ax.set_ylabel(r'Logic Level $\frac{ON}{ON + OFF}$')
  2. 28015更改为app.use( '/users', users );
  3. app.use( '/', users );(服务器端口)而不是localhost:3000/(数据库端口)发送请求
相关问题