在 Node.js (React) 中更改为不同的页面/组件时如何运行不同的 SQL 函数?
Posted
技术标签:
【中文标题】在 Node.js (React) 中更改为不同的页面/组件时如何运行不同的 SQL 函数?【英文标题】:How to run a different SQL function when changing to a different page/component in Node.js (React)? 【发布时间】:2019-08-08 02:52:53 【问题描述】:首先,我设法使用 mssql 模块以及 node.js、express 和 axios 从 SQL 中提取信息。 (server.js)
当我运行两个开发服务器(React:3000,节点:5000)时,它工作正常。
这是 server.js 的代码
const express = require('express');
var cors = require('cors')
const app = express();
app.use(cors())
app.enable('trust proxy');
app.get('/', function (req, res)
const sql = require("mssql");
//DB configuration object
const config =
user: 'INSERT USERNAME HERE',
password: 'INSERT PASSWORD HERE',
server: 'INSERT SERVER NAME HERE',
database: 'INSERT DB NAME HERE'
;
//connnecting to DB
sql.connect(config, function (err)
if (err) console.log(err);
//if (err) console.log(err);
//creates Request object
const request = new sql.Request();
//search query string
const queryString = "INSERT QUERY HERE"
//query to DB and gets data
request.query(queryString, function (err, recordset)
//to log user ip address (nothing particular)
console.dir(req.ip)
if (err) console.log(err)
// send records as a response
res.send(recordset);
sql.close();
);
);
);
const server = app.listen(5000,function ()
console.log('Server is running..');
);
我的问题是,当我更改为不同的页面或组件时,如何使 queryString 动态化?
这是我将信息放入的原始表格组件。
import Page from 'components/Page';
import React from 'react';
import Card, CardBody, CardHeader, Col, Row from 'reactstrap';
import Result from 'components/Result';
import API from '../routes/api/api';
class TablePage extends React.Component
constructor(props)
super(props);
this.state =
userList: null
;
render()
const userList = this.state;
const tableTypes = ['Report'];
var today = new Date();
today.setDate(today.getDate() -8);
var today2 = new Date().toISOString().slice(0, 10)
var dd = today.getDate();
var mm = today.getMonth()+1;
var yyyy = today.getFullYear();
if(dd<10)
dd = '0'+dd
if(mm<10)
mm = '0'+mm
today = yyyy + '-' + mm + '-' + dd;
return (
<Page
title="Completed RFQs" + " " + today + "~" + today2
breadcrumbs=[ name: 'report', active: true ]
className="TablePage"
>
tableTypes.map((tableType, index) => (
<Row key=index>
<Col>
<Card className="mb-3">
<CardHeader>tableType || 'default'</CardHeader>
<CardBody>
<Result userList=userList />
</CardBody>
</Card>
</Col>
</Row>
))
</Page>
);
async componentDidMount()
try
let userData = await API.get('/')
.then(res => res.data);
const users = [];
for (var i in userData.recordsets)
for (var j in userData.recordsets[i])
var x = userData.recordsets[i][j];
users.push(x)
//end for loop
const userList = users.map((user,index)=>
<tr key=index>
<th scope = "row">(i++)+1</th>
<th scope = "row">user.AEG_PERSON_NAMEEN</th>
<th scope = "row">user.OLDPRDNO</th>
<th scope = "row">user.PWNO</th>
<th scope = "row">user.SALES_REF</th>
<th scope = "row">user.JUM_PTYPE1</th>
<th scope = "row">user.SALES_PERSON_NAMEEN</th>
<th scope = "row">user.KEYWORD_ENDUSER</th>
<th scope = "row">user.REPLIED_DATE.slice(0,10)</th>
<th scope = "row">user.D</th>
</tr>);
this.setState(
...this.state, ...
userList
);
catch(e)
console.log(`???? Axios request failed: $e`);
;
export default TablePage;
假设我正在制作另一个页面以在表格中显示不同的信息,我如何使用不同的查询运行该 server.js 函数? 我真的需要制作另一个 server2.js,因为代码是多余的吗?
我的理想方式是在切换到不同页面时对同一个函数运行不同的查询,但除了创建另一个 server2.js 之外,我只是不知道如何以不同的方式执行此操作。
【问题讨论】:
【参考方案1】:您到底想查询什么?你能举两个例子吗?通常,您可以使用以下路由获取参数:
app.use('/user/:id', function (req, res)
让 id = req.params.id let sqlQuery ="Select USER where id=" + id
对不起,糟糕的写作和编码,被智能手机很快弄脏了。
但我认为我没有完全理解这个问题;)
【讨论】:
以上是关于在 Node.js (React) 中更改为不同的页面/组件时如何运行不同的 SQL 函数?的主要内容,如果未能解决你的问题,请参考以下文章
无法在 node.js 或 react 中访问 Gitlab env 变量