我正试图从我的集合中获取所有名为“用户”的数据,而我返回的只是未定义。
在名为 leaderboard / lb.js 的文件夹和文件中,是的,我的数据库称为集合:
const mongoose = require("mongoose");
let out = {};
mongoose.connect(`mongodb+srv://ramoth123:${process.env.MONGOPASS}@ramfish-bot-mgpji.mongodb.net/collections?retryWrites=true&w=majority`, { useNewUrlParser: true }, function(err, db) {
if (err) throw err;
//let dbo = db.db("collections");
db.collection("users").find({ xp: Number }).toArray(function(err, result) {
if (err) throw err;
out.users = result;
db.close();
});
});
function leaderboardUsersRaw() {
return out.users
}
module.exports = leaderboardUsersRaw
In my database collection named "users"
在我的 server.js 文件中:
app.get("/leaderboard", (req, res) => {
const leaderboardFile = require("./leaderboard/lb.js")
let users = leaderboardFile()
console.log(users)
res.send(users)
})
我在做什么错??
编辑:现在可以正常工作,但是在加载2次后,tf是这个吗?
答案 0 :(得分:0)
您的数据库查询是异步的,因此您的函数将在查询完成之前返回用户。
您可以尝试使用 async-await 。
尝试一下:
**排行榜/lb.js **
const mongoose = require("mongoose");
async function leaderboardUsersRaw() {
const db = await mongoose.connect(`mongodb+srv://ramoth123:${process.env.MONGOPASS}@ramfish-bot-mgpji.mongodb.net/collections?retryWrites=true&w=majority`, { useNewUrlParser: true });
const users = await db.collection("users").find({ xp: Number });
const result = users.toArray();
db.close();
return result;
}
module.exports = leaderboardUsersRaw;
server.js
const leaderboardFile = require("./leaderboard/lb.js");
app.get("/leaderboard", async (req, res) => {
try {
let users = await leaderboardFile();
res.send(users);
}
catch(err) {
// Handle error
}
});
我希望这会有所帮助。