0

我想GET/PUT/POST/DELETE通过将集成在 Oracle JET 上的网页 (HTML) 使用 API。该网页将有一个输入自由文本选项,用户可以在其中输入以更新记录。即如果我在 JET 仪表板上单击一条记录,将调用 API ‘GET /alluser/:FIRST_NAME– Read the profile of an user',一旦用户输入文本并点击提交,它将以一个文本框显示详细记录作为自由文本,‘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();

谢谢你。

4

1 回答 1

0

Oracle JET 可以帮助您进行 API 调用。

这是他们的食谱中的一个例子:http ://www.oracle.com/webfolder/technetwork/jet/jetCookbook.html?component=crud&demo=model

查看CollectionModel的文档。

如果您是第一次进入它,那么需要阅读很多内容,所以我将给出一个 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);
                }
            });
于 2018-06-13T17:12:31.177 回答