当试图按下按钮查询数据库并显示结果时,我基本上试图从html / ejs调用“ get”方法。抱歉,这很简单,但是我无法正常工作。
我试图require
并在script
标签内调用该函数,但这在浏览器上不起作用。我试图用<script src="text/javascript" src="filename">
添加js文件,但这也会导致错误。
我构建的其余API使用oracledb
与oracle 11g(Toad)对话。
我基本上是想在此类中调用get
函数
const employees = require('../db_apis/employees.js');
async function get(req, res, next) {
try {
const context = {};
context.id = parseInt(req.params.id, 10);
const rows = await employees.find(context);
if (req.params.id) {
if (rows.length === 1) {
res.status(200).json(rows[0]);
} else {
res.status(404).end();
}
} else {
res.status(200).json(rows);
}
} catch (err) {
next(err);
}
}
...
db_apis / employees.js
const oracledb = require('oracledb');
const database = require('../services/database');
async function find(context) {
const baseQuery =
`SELECT *
FROM choice_names`;
console.log('in find');
let query = baseQuery;
const binds = {};
let additionalQuery = '\nwhere ';
if (context.id) {
binds.choice_name = context.id;
additionalQuery += `choice_name = :choice_name`;
// query += `\nwhere choice_name = :choice_name`;
} else if (context.user) {
binds.choice_user = context.user;
additionalQuery += `choice_user = :choice_user`;
} else if (context.date) {
binds.choice_date = context.date;
additionalQuery += `choice_date = :choice_date`;
}
if (context.id || context.user || context.date) {
query += additionalQuery;
}
console.log(query);
const result = await database.simpleExecute(query, binds);
return result.rows;
}
...
router.js
const express = require('express');
const router = new express.Router();
const employees = require('../controllers/employees');
router.route('/employees/:id?')
.get(employees.get)
.post(employees.post)
.put(employees.put)
.delete(employees.delete);
module.exports = router;
index.ejs
...
<button onclick="get()">Click me</button>
...
答案 0 :(得分:0)
您(非常)容易混淆前端和后端代码。
该快速应用程序位于后端,在某些端口上运行,从而暴露/employees/:id
路由。
但是前端部分无权访问后端脚本,因此您需要从前端到该路由执行XHR(Ajax)请求并获取结果。
例如,在jQuery中,它可以是
function get(){
$.get('/employees/1').done(..do something..)
}
您可以参考this answer上的角度进行操作。