javascript - 使用 mongo nodejs require('file.js') module.exports 时如何处理结果
问题描述
我正在用 nodejs + express + mongodb + ejs 构建一个应用程序。
对于这个问题:我有 2 个文件(server.js + db.js)我把所有与 mongo 相关的东西都放在那个单独的文件(db.js)中,这样我就可以在那里进行所有数据库查询。问题:结果返回一个查询对象,我不知道如何在迭代中使用它(列出生成的文档),我将其发送给 ejs。当我执行 console.log(result.length) 时显示“未定义”。
有什么想法吗?
/* server.js: */
let db = require("./db.js");
app1.get("/page", function (req, res) {
let result= db.getPLayers(); // console.log(result); ==> query object, see below => Q
let qty = result.length; // console.log(qty); ==> undefined
res.render('adm', { playersFound: result}); // sent to render result via ejs
}
/* db.js */
module.exports.getPLayers = function() {
return Player.find({});
}
// => Q 这是我得到的查询对象:
> Query { _mongooseOptions: {}, _transforms: [], _hooks: Kareem {
> _pres: Map {}, _posts: Map {} }, _executionCount: 0, mongooseCollection:
NativeCollection {
> collection: Collection { s: [Object] },
> Promise: [Function: Promise],
> _closed: false,
> opts: { .... and lots more
>
解决方案
// server.js
app1.get("/adm", function (req, res) {
let db = require("./db.js");
let playersList;
let teamsList;
db.getPLayers().then(function () {
playersList = this.docs;
})
.then(function () {
db.getTeams().then(function () {
teamsList = this.docs;
})
.then(function () {
res.render('adm', { playersFound:
playersList, teamsFound: teamsList });//, teamsFound: dbteamsFound });
});
});
});
// db.js
exports.getPLayers = function(){
return Player.find({}, function (err, docs) {
this.docs=docs; console.log("==> db exporting getPlayers :"+
this.docs.length);
});
}
exports.getTeams = function(){
return Team.find({}, function (err, docs) {
this.docs=docs; console.log("==> db exporting getTeams :"+
this.docs.length);
});
}
推荐阅读
- python - 如何在 Python 中使用 OAuth 对 Wikimedia Commons 查询服务进行身份验证?
- java - 多个请求进入 Java gRPC Server 的同一个线程
- java - 如何将列表对象绑定到百里香形式?
- opencv - OpenCV cv::Mat to System::Drawing::Bitmap throw System.ArgumentException (OpenCV C++/CLI, x64)
- python - Python 在文件中搜索字符串时提高性能
- android - Android AR 场景形式。移动 3D 模型随着相机移动。3D 模型应与底部对齐
- php - 使用 PHP Curl 检查 SSL 的到期日期
- java - 包含使用 AndroidX 的工具栏会使我的应用程序崩溃
- java - Java Scanner 在这种情况下如何工作?
- cuda - 如何获得 CUDA 中当前计算能力的最大共享内存量?