javascript - 使用猫鼬查询结果更改变量值
问题描述
我有代码崩溃,需要用projectsDocument替换“doc”(查询结果),但是函数中没有定义projectsDocument,请帮帮我!!!
var projectsDocument, categoryDocument; //empty
projectsModel.find({}, {}, (err, doc) => {
if (err) return next(err);
if (doc) {
projectsDocument = doc;
}
});
console.log(projectsDocument); //want to projectsDocument be equals to doc
[解决了]
我将我的代码更改为此并且它可以工作
router.get('/', async(req, res, next) => {
await projectsModel.find().then(function(doc) {
projectsDocument = doc;
}).catch(function(error) {
console.log(error);
});
});
解决方案
因为Javascript本质上是异步的,这意味着它不会同步执行诸如API调用之类的指令(不等待响应)。
猫鼬版 > 4.0
projectsModel.find()
.then(function(doc){
if (doc) {
projectsDocument = doc;
}
})
.catch(function(err) {})
猫鼬版本 < 4.0
var projects = projectsModel.find().exec() //returns promise
projects.then(function(project){
if (project) {
projectsDocument = project;
}
})
推荐阅读
- c++ - 在 QTableView 上绘制 QGraphicsLineItem
- python - 为什么我的程序不打印第 9 行而是打印第 7 行?
- sql - to_SQL nan 和 Null 值,仍然在 SQL 表中获取 'nan' 字符串文字
- node.js - 开发依赖项和 Cypress.io 中的依赖项之间的区别
- django - Wagtail 管理站点和 Django 管理站点之间的区别?
- git - 如何恢复使用 git 命令 'git clean -fdx' 删除的文件
- java - 在 Java 方法声明中引用子类
- angular - 忽略用于 outputHashing 的文件
- javascript - FTDI 驱动的 USB 到 RS485 写入后是否需要未记录的超时?
- python - TclError:无法连接到显示“:0.0”