簡體   English   中英

Express node.js api app.post 適用於 / 但不適用於 /path

[英]Express node.js api app.post does work for / but not with /path

我是 Node.js 的新手,並試圖制作一個 API,它將在 sql 服務器中執行 CRUD 操作。 對我來說,問題是我可以獲取數據但無法發布它,並得到錯誤“無法獲取 /”。 我知道關於這個主題有類似的問題,但對我沒有任何作用,所以我想我的代碼可能有不同類型的錯誤。 任何幫助將不勝感激,並以某種方式挽救我的生命。 另外,這是我關於stackoverflow的第一個問題,對可能出現的錯誤深表歉意..

這是server.js

 const sql = require('mssql'); const express = require('express'); const bodyParser = require('body-parser'); var port = process.env.port || 5000; const sqlConfig = require('./connection/connect') const app = express(); app.use(express.json()); // json desteklemesi için app.use(express.urlencoded({ extended: true })); app.get("/test", (req, res, next) => { new sql.ConnectionPool(sqlConfig).connect().then(pool => { return pool.query('select * from tblProfile') }).then(result => { res.send(result); }) }) app.post('/test', (req, res) => { let name = req.query.name; let lastname = req.query.lastname; let email = req.query.email; let password = req.query.password; let sql = "INSERT INTO tblProfile(name,lastname,email,password) VALUES(? ? ? ?)"; conn.query(sql, [name, lastname, email, password], (err, result) => { if (err) throw err; res.write("inserted."); res.end(); }); app.listen(port, () => { console.log("working: " + port) }) });

這是connect.js

 var sqlConfig = { server: '192.168.1.2', database: 'profile', user: 'username', password: 'user', }; module.exports = sqlConfig;

發生這種情況是因為您沒有響應或向該路由發送任何內容

所以如果你想擺脫錯誤 Run

app.get('/', (req,res)=>{
   res.send('hello world')
}

但是如果你想發送一個 static 文件到路由創建一個文件夾調用 public *注意它可以是任何東西

並輸入

var path = require('path');
app.use(express.static(path.join(__dirname, 'public')));

然后您可以訪問目錄中的代碼

至於寫作,我認為你應該試試這個

app.post('/test', (req, res) => {
    let name = req.body.name;
    let lastname = req.body.lastname;
    let email = req.body.email;
    let password = req.body.password;
    let sql = "INSERT INTO tblProfile(name,lastname,email,password VAUES(? ? ? ?)";
    conn.query(sql, [name, lastname, email, password], (err, result) => {
        if (err) throw err;
        res.write("inserted.");
        res.end();
    });

將查詢更改為 body 因為您安裝了 body-parser

快速查看您的代碼,我能看到的唯一問題是您提交數據的查詢。 在您的查詢語句中,我在要輸入數據庫的變量后添加了一個右括號,並對單詞 Values 進行了錯字更正。 我還更改了從 req.query 中檢索數據的方式,以對其進行解構,並簡化代碼。 根據我看到的所有其他內容,以及您能夠從數據庫中獲取數據的事實,這應該可以正常工作。 如果沒有,我建議在 post 查詢中插入一些console.log()語句,以查看可能出現問題的位置以及原因。 例如,您可以運行console.dir(req.query); 在您的發布路線中查看實際來自 req 的數據並確保它們都在那里。 如果缺少某些內容,則查詢將不會實際執行。 如果這不起作用,請告訴我,以及您所做的任何控制台日志中的信息,我會再看一下。

 const sql = require('mssql'); const express = require('express'); const bodyParser = require('body-parser'); var port = process.env.port || 5000; const sqlConfig = require('./connection/connect') const app = express(); app.use(express.json()); // json desteklemesi için app.use(express.urlencoded({ extended: true })); app.get("/test", (req, res, next) => { new sql.ConnectionPool(sqlConfig).connect().then(pool => { return pool.query('select * from tblProfile') }).then(result => { res.send(result); }) }) app.post('/test', (req, res) => { //console.dir(req.query); let {name, lastname, email, password} = req.query; let sql = "INSERT INTO tblProfile(name,lastname,email,password) VALUES(? ? ? ?)"; conn.query(sql, [name, lastname, email, password], (err, result) => { if (err) throw err; res.write("inserted."); res.end(); }); app.listen(port, () => { console.log("working: " + port) }) });

暫無
暫無

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

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