【发布时间】:2021-11-19 03:25:03
【问题描述】:
我正在创建我的第一个 API,我在这个 url 中使用 .env 作为数据库变量:
const uri = `mongodb+srv://${mongo_user}:${mongo_pwd}@cluster0.ynvbj.mongodb.net/${mongo_db}?retryWrites=true&w=majority`
然后创建客户端:
const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true })
然后,一个 main 函数调用从 Mongo 中查找数据的函数,例如用户:
async function main() {
try {
await client.connect();
await getUser(client, 'users', mongo_db);
} catch (e) {
console.error(e);
} finally {
await client.close();
}
}
main().catch(console.err);
//------GET
//user by Dni
async function getUser(client, coll, mongo_db){
const collection = await client.db(`${mongo_db}`).collection(`${coll}`)
.find({dni: 38383838}).toArray(function(err, results) {
console.log(results);
return results;
})
};
最后,我创建了路线,但我得到了undefined。我已经检查了所有内容,但没有发现问题所在。
const {getUser, getOrder, getProducts} = require('./db_connection')
const {Router} = require('express')
const router = Router()
//GET
//get user
router.get('/users', async (req, res) => {
let data = await getUser;
res.json({data});
})
module.exports = router;
这是 app.js
const express = require('express')
const app = express()
require('dotenv').config();
//settings
app.set('port', process.env.PORT || 3000)
//middlewares
app.use(express.urlencoded({extended:false}))
app.use(express.json())
//server
app.listen(app.get('port'), ()=> {
console.log(`Server running on port ${app.get('port')}`)
})
//require api
app.use('/api', require('./api_routes'))
【问题讨论】:
-
请编辑您的问题并将您的代码添加为代码而不是图像。
-
您好,您能否将您的代码作为代码而不是图像提供。另外,您能否提供一个堆栈跟踪以及给您“未定义”的行
-
@Dominik 嗨,我用代码编辑了问题,谢谢。这是在终端中,我在 localhost 服务器中看不到 json 数据在端口 3002 上运行 undefined
-
@TheBritishAreComing 当然,我已经编辑,所以你可以看到代码。终端显示:Server running on port 3002 undefined
-
let data = await getUser;行不执行函数,也不传递您期望的参数。必须是let data = await getUser(client, coll, mongo_db);
标签: node.js mongodb api express crud