簡體   English   中英

在Node.js中更改為其他頁面/組件時,如何運行其他SQL函數(反應)?

[英]How to run a different SQL function when changing to a different page/component in Node.js (React)?

首先,我設法使用mssql模塊以及node.js,express和axios從SQL中提取信息。 (server.js)

當我同時運行兩個開發服務器(反應: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之外,我不知道如何以不同的方式進行操作。

您到底想查詢什么? 你能舉兩個例子嗎? 通常,您可以使用以下路徑來獲取參數:

app.use('/ user /:id',function(req,res){

let id = req.params.id let sqlQuery =“選擇用戶,其中id =” + id

}

不好的寫作和編碼,很快就被智能手機弄臟了。

但我認為我不完全理解這個問題;)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM