Как использовать API, который создается в nodejs-express-oracledb - PullRequest
0 голосов
/ 12 июня 2018

Я бы хотел использовать GET/PUT/POST/DELETE API через веб-страницу (HTML), которая будет интегрирована в Oracle JET.Веб-страница будет иметь один вариант ввода свободного текста, где пользователь может ввести, чтобы обновить запись.т.е. если я щелкну одну запись на панели инструментов JET, будет вызван API ‘GET /alluser/:FIRST_NAME - «Чтение профиля пользователя», он отобразит подробную запись с одним текстовым полем в виде свободного текста, как только пользователь введет текст и нажметотправить, ‘PUT /process_post - будет вызвано обновление профиля пользовательского API, который обновит запись.

Вот мой скрипт

var express = require('express');
var oracledb = require('oracledb');
var app = express();
var dbConfig = require('./dbconfig.js');

var bodyParser = require('body-parser');
var port = 3000;
app.use(bodyParser.json()); // Use body parser to parse JSON body
oracledb.outFormat = oracledb.OBJECT;
// Get a non-pooled connection
function run() {
 oracledb.createPool({
      user          : dbConfig.user,
    password      : dbConfig.password,
    connectString : dbConfig.connectString
    },
    function(err) {
      if (err)
        console.error("createPool() error: " + err.message);
      else
        var server = app.listen(port,
          function () {
            console.log('Server is listening on port ' + server.address().port);                
          });
    });
}
 function doGetConnection(res, cb) {
  oracledb.getConnection(function (err, connection) {
    if (err) {
      res.set('Content-Type', 'application/json');
      res.status(500).send(JSON.stringify({
        status: 500,
        message: "Error getting DB connection",
        detailed_message: err.message

      }));
    } else {
      cb(err, connection);
      console.log("  Connection is connected");
    }
  });
}


app.post('/process_post', function (req, res) {
console.log("contenttype"+req.get('Content-Type'))      
  doGetConnection(res, function(err, connection) {
    if (err)
      return;
    connection.execute(
      "INSERT INTO TEST_TABLE(FIRST_NAME,LAST_NAME) VALUES (:FIRST_NAME,:LAST_NAME)",
    [(req.body.FIRST_NAME),(req.body.LAST_NAME) ],

      { autoCommit: true,
      outFormat:oracledb.OBJECT
      },
       console.log("check2"),
      function (err) {
      console.log("check3");
        if (err) {
        console.log("check4");
          res.set('Content-Type', 'application/json');
          res.status(400).send(JSON.stringify({
            status: 400,
            message: "Input Error",
            detailed_message: err.message
          }));
        } else {
          // Successfully created the resource
          res.status(201).set('Location', '/process_post/' + req.body.FIRST_NAME).end();

        }
        doRelease(connection, "POST /process_post");
      });
  });
});

app.get('/alluser', function (req, res) {
  doGetConnection(res, function(err, connection) {
    if (err)
      return;
    connection.execute(
      "SELECT * from employees",
      function (err, result) {
        if (err) {
          res.set('Content-Type', 'application/json');
          res.status(500).send(JSON.stringify({
            status: 500,
            message: "Error getting the farmer's profile",
            detailed_message: err.message
          }));
        } else {
          res.contentType('application/json').status(200);
          res.send(JSON.stringify(result.rows));
        }
        doRelease(connection, "GET /bananas");
      });
  });
});
app.get('/alluser/:FIRST_NAME', function (req, res) {
  doGetConnection(res, function(err, connection) {
    if (err)
      return;
    connection.execute(
      "SELECT * from employees  WHERE first_name = :f",
      { f: req.params.FIRST_NAME },
      function (err, result) {
        if (err) {
          res.set('Content-Type', 'application/json');
          res.status(500).send(JSON.stringify({
            status: 500,
            message: "Error getting the farmer's profile",
            detailed_message: err.message
          }));
        } else if (result.rows.length < 1) {
          res.set('Content-Type', 'application/json');
          res.status(404).send(JSON.stringify({
            status: 404,
            message: "FIRST_NAME doesn't exist",
            detailed_message: ""
          }));
        } else {
          res.contentType('application/json');
          res.status(200).send(JSON.stringify(result.rows));
        }
        doRelease(connection, "GET /user/" + req.params.FIRST_NAME);
      });
  });
});

function doRelease(connection, message) {
  connection.close(
    function(err) {
      if (err)
        console.error(err);
      else
        console.log(message + " : Connection released");
    });
}
run();

Спасибо.

1 Ответ

0 голосов
/ 13 июня 2018

Oracle JET может помочь вам совершать вызовы API.

Вот пример из их поваренной книги: http://www.oracle.com/webfolder/technetwork/jet/jetCookbook.html?component=crud&demo=model

Посмотрите документацию для Коллекция и Модель .

Многое можно прочитать, если вы в первый раз разберетесь в нем, поэтому я приведу краткий пример для GET all:

var dataModel = oj.Model.extend({urlRoot: 'example.com'});
var modelInstance = new dataModel();

var CollectionConfig = {
   model: modelInstance,
   url: 'example.com'
};
var dataCollection = oj.Collection.extend(CollectionConfig);
var collectionInstance = new dataCollection();
collectionInstance.fetch({
                success: function (collection, response, options) {
                    console.log(response);
                },
                error: function (jqXHR, textStatus, errorThrown) {
                    console.log(errorThrown);
                }
            });
...