我使用 Express、Sequelize 和 mySql 創建了一個服務器。下面的代碼是我的產品路線:
const express = require('express');
const Product = require('../models/product');
const router = express.Router();
router.get("/", async (req, res) => {
/* const products = await Product.findAll();
if (product) {
res.status(200).send({message: 'Product found successfully', data: products})
} else {
res.status(404).send({message: 'Product not found'})
} */
res.status(200).end()
});
router.post("/", async (req, res) => {
try {
const product = await Product.create(req.body);
res.send(product)
} catch (error) {
console.log(error);
}
})
module.exports = router;
這是我的 server.js 代碼:
const express = require("express");
const app = express();
require("dotenv").config();
const cors = require("cors");
const endpoints = require("express-list-endpoints");
const port = 5555;
const productRouter = require("./src/routes/product");
/* const variantRouter = require("./src/routes/variant"); */
const sequelize = require("./src/db/config");
app.use(express.static(__dirname "/public"));
var corsOption = {
origin: true,
methods: "GET,HEAD,PUT,PATCH,POST,DELETE",
credentials: true,
exposedHeaders: ["x-auth-token"],
};
app.use(express.json());
app.use(cors(corsOption))
app.use("products", productRouter);
/* app.use("variant", variantRouter); */
app.get("/", (req, res) => {
res.send("Server is Healthy!");
});
sequelize.sync({ force: true }).then(() => {
console.log("Drop and re-sync db.");
});
console.log(endpoints(app));
app.listen(process.env.PORT, () => {
console.log(`server is listening at http://localhost:${process.env.PORT}`),
sequelize.authenticate().then(
() => console.log("DB Connected"),
(err) => console.log("Error in connection", err)
);
});
我這里也有我的模型:
const sequelize = require("../db/config");
const Sequelize = require("sequelize");
const Variant = require("./variants")
const Product = sequelize.define("products", {
id: {
type: Sequelize.UUID,
primaryKey: true,
},
product_name: {
type: Sequelize.STRING,
allowNull: false,
},
product_description: {
type: Sequelize.STRING,
allowNull: false,
},
date_uploaded: {
type: Sequelize.DATE,
allowNull: true
},
date_edited: {
type: Sequelize.DATE,
allowNull: true,
},
product_varieties: {
type : Sequelize.UUID,
reference: {
model: 'variant',
key: 'id'
}
},
},
{timestamp: false}
);
module.exports = Product;
我的服務器 JS 中的路由正在顯示已發送的字串。但是來自 product.js 的路由不起作用。告訴我不能在 /products 上 GET 和 POST
解決這個問題的方法是什么?
uj5u.com熱心網友回復:
你忘了/之前products在app.use("/products")
uj5u.com熱心網友回復:
看起來您的靜態公用檔案夾與 API 路由器發生沖突,請嘗試將每個 API 路由器放在 app.use(express.static(__dirname "/public"));
我在這里找到了解決方案:Express services static files and routing
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/367183.html
標籤:javascript mysql 节点.js 表达 sequelize.js
上一篇:node.js-有沒有辦法讓不和諧機器人發送從檔案中提取的隨機圖片?節點.js
下一篇:Axios未定義回應
