gpt4 book ai didi

node.js - 带有 MySQL/Mongo 后端的 Next.js

转载 作者:行者123 更新时间:2023-12-03 22:28:04 24 4
gpt4 key购买 nike

我有一个现有的 Node.js/Express 应用程序,它连接到 2 个独立的数据库,它有一个用于所有关系的 MySQL 数据库和一个用于非关系垂直数据的 MongoDB 存储。

它使用 Sequelize 和 Mongoose,并且绝对流畅。

我今天一直在看 Next.js,我印象非常深刻,我对 React 的不满之一实际上是有多少 bootstrap 以及实现简单的事情需要多少代码。 Next.js 似乎为我解决了其中的一些问题,所以我愿意接受它。

第一个问题 - 是否可以将 Next.js 连接到现有数据库并直接在 View 中读取它们的对象?

例如./server.js:

const mongoDb = mongoose.connect(configDB.url); // MongoDB connection
const models = require('./models'); // Sequelize connection

app.prepare().then(() => {
server.use((req, res, next) => {
req.mongodb = mongoDb
req.mysqldb = models
// Logging req.mysqldb/req.mongodb at this point gives the correct result.
next()
});

server.get('*', (req, res) => {
return handle(req, res)
})
})

./pages/index.js:
Index.getInitialProps = async function(req) {
console.log(req.mongodb);
console.log(req.mysqldb)

// Example of what I want: req.mysqldb.users.findAll()....... to populate collection for this view
}

在 index.js 页面中执行控制台语句时,它们被记录为未定义。

理想情况下我想直接在next.js模板中使用objects/ORM层,我不想在内部调用我自己的API,这似乎是对资源的巨大浪费!

任何帮助,不胜感激。

最佳答案

仅供日后引用。 getInitialProps 传入一个对象,其中一个键是 req 。所以你应该做类似下面的事情

// add the curly braces around req
Index.getInitialProps = async function({ req }) {
// code
}

这被称为 Function Parameter Destructuring 并在 ES6 中引入。这完成的类似于以下代码
Index.getInitialProps = async function(_ref) {
var req = _ref.req;
}

意思是,它获取传递的对象的 req 值并使用该值。

关于node.js - 带有 MySQL/Mongo 后端的 Next.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48509312/

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