gpt4 book ai didi

javascript - 路由器未在 Express 应用程序中触发 .find 或 .findByID。也使用 nextjs

转载 作者:行者123 更新时间:2023-11-30 06:10:31 26 4
gpt4 key购买 nike

我正在使用 NextJS/MERN 堆栈。我的 NextJS 使用我的 server.js 文件,同时为我的 API 导入路由。当从 Postman 或浏览器触发 API 调用时,这些路由似乎正在运行,因为它们确实显示了事件。但是,这是事件停止的地方。据我所知,它没有通过 Model.find() 函数。我不确定这是否与 Next js 和 server.js 中的 prepare 方法有关,或者这是否与 bodyparser 问题有关。

这是我的 server.js

const express = require("express");
const urlObject = require('./baseURL')
const passport = require("./nextexpress/config/passport-setup");
const passportSetup = require("./nextexpress/config/passport-setup");
const session = require("express-session");
const authRoutes = require("./nextexpress/routes/auth-routes");
const KBRoutes = require("./nextexpress/routes/kb-routes");
const userRoutes = require('./nextexpress/routes/user-routes')
const pollRoutes = require('./nextexpress/routes/poll-routes')
const mongoose = require("mongoose");
const cookieParser = require("cookie-parser"); // parse cookie header
const next = require('next')
const dev = process.env.NODE_ENV !== 'production'
const nextapp = next({ dev })
const handle = nextapp.getRequestHandler()

const bodyParser = require('body-parser');
// mongoose.connect(process.env.MONGODB_URI || 'mongodb://localhost:27017/kb', { useNewUrlParser: true });
mongoose.connect('mongodb://localhost:27017/kb')
console.log(process.env.MONGODB_URI)
const connection = mongoose.connection;
const baseURL = urlObject.baseURL

const PORT = process.env.PORT || 3000
connection.once('open', function () {
console.log("MongoDB database connection established successfully");
})

nextapp.prepare().then(() => {
const app = express();

console.log(process.env.PORT, '----port here ----')
app.use(cookieParser());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use("/api/auth", authRoutes);
app.use("/api/kb", KBRoutes);
app.use('/api/user', userRoutes)
app.use('/api/poll', pollRoutes)
app.get('/posts/:id', (req, res) => {

return nextapp.render(req, res, '/article', { id: req.params.id })
})
app.get('/redirect/:id', (req, res) => {

return nextapp.render(req, res, '/redirect')
})

app.all('*', (req, res) => {
return handle(req, res)
})

app.listen(PORT, err => {
if (err) throw err
console.log(`> Ready on http://localhost:${PORT}`)
})
})



// connect react to nodejs express server

以及相关路线:

KBRoutes.get('/', (req, res) => {
console.log(KB.Model)
KB.find({}, (err, photos) => {
res.json(kbs)
})
})

我能够到达每条路线。在此之前,当我将 NextJS React 部分拆分为一个单独的域时,因此将单独的 server.js 文件分开。一旦我介绍了 NextJs 就出现了这个问题。任何帮助将不胜感激。

最佳答案

看起来相关路由试图返回 json(kbs),但似乎没有定义 kbs。返回查找查询的结果对我来说更有意义,包括一个很好的错误捕捉器和一些良好实践的状态。捕获错误应该会告诉您出了什么问题,无论如何我都希望您的控制台中出现错误,这将帮助我们找到更多答案。

KB.find({}, (err, photos) => {
if (err) res.status(401).send(err)
res.status(200).json(photos)
})

关于javascript - 路由器未在 Express 应用程序中触发 .find 或 .findByID。也使用 nextjs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59170958/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com