node.js mongodb - collection.find().toArray(callback) - 回调不会被调用

2024-04-11

我刚刚开始使用 mongodb,但在尝试在集合上使用 .find() 时遇到问题。

我创建了一个数据访问对象,它打开一个特定的数据库,然后让您对其执行操作。这是代码:

The 构造函数:

var DataAccessObject = function(db_name, host, port){
    this.db = new Db(db_name, new Server(host, port, {auto_reconnect: true}, {}));
    this.db.open(function(){});
}

A 获取集合功能:

DataAccessObject.prototype.getCollection = function(collection_name, callback) {
    this.db.collection(collection_name, function(error, collection) {
        if(error) callback(error);
        else callback(null, collection);
  });
};

A save功能:

DataAccessObject.prototype.save = function(collection_name, data, callback){
    this.getCollection(collection_name, function(error, collection){
        if(error) callback(error);
        else{
            //in case it's just one article and not an array of articles
            if(typeof (data.length) === 'undefined'){
                data = [data];
            }

            //insert to collection
            collection.insert(data, function(){
                callback(null, data);
            });
        }
    });
}

问题似乎出在哪里——findAll 函数:

DataAccessObject.prototype.findAll = function(collection_name, callback) {
    this.getCollection(collection_name, function(error, collection) {
      if(error) callback(error)
      else {
        collection.find().toArray(function(error, results){
            if(error) callback(error);
            else callback(null, results);
        });
      }
    });
};

每当我尝试做dao。findAll(错误,回调), the callback永远不会被叫到。 我已将问题范围缩小到代码的以下部分:

collection.find().toArray(function(error, result){
    //... whatever is in here never gets executed
});

我看过其他人是怎么做的。事实上,我正在关注本教程 http://howtonode.org/express-mongodb很接近。似乎没有人对 collection.find().toArray() 有这个问题,而且它也没有出现在我的搜索中。

谢谢, 夏安。


您没有使用open回调所以如果你想使findall创建后立即请求dao那么它就不会准备好。

如果你的代码是这样的,它将无法工作。

var dao = new DataAccessObject("my_dbase", "localhost", 27017);

dao.findAll("my_collection",function() {console.log(arguments);});

我测试了一下,没有找到记录,也没有报错。我认为它应该给出一个错误。

但是,如果您更改它以便向构造函数提供回调,那么它应该可以工作。

var DataAccessObject = function(db_name, host, port, callback){
    this.db = new Db(db_name, new Server(host, port, {auto_reconnect: true}, {}));
    this.db.open(callback);
}

并使你的代码像这样。

var dao = new DataAccessObject("my_dbase", "localhost", 27017, function() {
    dao.findAll("my_collection",function() {console.log(arguments);});
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

node.js mongodb - collection.find().toArray(callback) - 回调不会被调用 的相关文章

  • 如何制作像Stackoverflow一样的可折叠评论框

    我正在构建一个网站 并且有一个状态更新列表 我希望允许用户为列表中的每个项目撰写评论 但是我正在尝试实现一个类似于堆栈溢出工作方式的用户界面 特别是可折叠的评论表单 列表 用户在其中单击对列表中的特定状态更新添加评论 并且在列表中的该项目下
  • 如何在 Chrome 中实现抓取光标图标?

    我知道可以在 Chrome 中使用抓取光标图标 当然是在 Gmail 中 但我不知道如何在我的代码中实现它 我已经尝试过 在CSS中 body cursor grab body cursor webkit grab body cursor
  • React延迟加载/无限滚动解决方案

    我花了一段时间才弄清楚如何使用优秀的延迟加载图像React Lazyload 组件 https github com jasonslyvia react lazyload 演示在滚动时延迟加载图像 但在测试时我无法获得相同的行为 罪魁祸首是
  • 捕获外部脚本文件中的 javascript 错误

    我有一点 JavaScript Jquery 工具的叠加层 http flowplayer org tools overlay index html 当放到错误使用它的页面上时可能会引发异常 我正在尝试优雅地处理它 我有一个通用的 wind
  • JointJS - 处理链接删除点击

    创建链接后 将鼠标悬停在其上会显示红色 X 以将其删除 单击此按钮将触发一系列事件 通过订阅 全部 活动收集 单元格 向下指针 链接 向下指针 cell pointermove x5 似乎可疑 单元格 指针向上 在浏览了文档并花费了太长时间
  • 如何向尚未添加到页面的元素注册 Javascript 事件处理程序

    我正在尝试构建一个greasemonkey 脚本 它将根据用户与其他动态创建的数据表的交互动态创建数据表 我的问题是 每次创建表时 我都必须进行两次传递 一次用于创建表 另一次用于获取表中我想要添加事件处理程序的所有对象 通过 id 并添加
  • 如何在参数上使用 .reduce() 而不是特定的数组或对象?

    我想定义一个函数 flatten 将多个元素展平为一个数组 我知道以下是不可能的 但本质上我想这样做 var flatten function var flattened arguments reduce function acc elem
  • t /= d 是什么意思? Python 和错误

    t current time b begInnIng value c change In value d duration def easeOutQuad swing function x t b c d alert jQuery easi
  • django ajax post 403被禁止

    使用 django 1 4 当我尝试从我的 javascript 做我的 django 服务器上的帖子时 我收到 403 错误 我的 get 工作正常 尽管问题仅出在帖子上 也尝试过 csrf exempt但没有运气 更新 我现在可以发布我
  • 用于导出到 CSV/Excel 的数据 URI(无服务器端请求):浏览器支持/限制?

    以下问题 Javascript 或 Flash 导出至 CSV Excel https stackoverflow com questions 8150516 javascript or flash export to csv excel
  • Rxjs 可观察等待直到满足某些条件

    我有以下重试逻辑来重试操作 对于单个请求来说它工作得很好 对于多个正在进行的请求 我想在重试之前等待现有的重试逻辑完成 handleError errors Observable
  • 如何检查jquery数据表中的每个复选框?

    我有一个第一列带有复选框的表格 我使用 jQuery DataTable 插件显示我的表格 我制作了 2 个链接来选择 取消选择每个复选框 这是选择全部的一个 a href Select all a 和 JavaScript functio
  • 比较 javascript 元素和 scala 变量的 Play 框架 Twirl 模板

    如下面的代码示例所示 我想比较 scala 辅助元素内的 javascript 元素 然而 即使存在元素 abcde 它也始终返回 false 除了使用标签之外 如何获取 scala 辅助元素内的 javascript 值 appSeq S
  • 如何为 ng-repeat orderBy 创建回调?

    寻找一种方法让 AngularJS 的 ng repeat orderBy 过滤器在完成渲染后执行回调 Markup div table thead tr th Name th th Age th tr thead tbody tr tr
  • while 循环元素状态 cypress

    我有一个问题 我想单击一个按钮直到它消失 但次数可能会有所不同 所以我想检查可见性状态 当可见 true时单击按钮 当可见 false时结束测试 但问题是我不知道如何循环从获取元素到末尾的所有链 单击按钮一次 由于中断而停止 如果我删除中断
  • 盒式捆绑包与 MVC4 捆绑包

    我目前正在开发一个原型 ASP NET MVC 3 解决方案 该解决方案将用作多个项目重写的基础 来自 Web 表单 我的目标之一是跨应用程序实现一些脚本管理 而不是我们目前没有的目标 MVC 3有一个缺陷恕我直言 如果您需要在部分视图或模
  • 使用 JavaScript 从 URL 变量读取来加载不同的 CSS 样式表

    我试图在我的 WordPress 博客上使用两个不同的样式表 以便在通过 Web 访问页面时使用一个样式表 而在通过我们的 iOS 应用程序访问博客内容时使用另一个样式表 现在 我们将 app true 附加到来自 iOS 应用程序的 UR
  • 如何在 ChartJS 中创建自定义图例

    我需要使用 ChartJS 库为我的圆环图创建自定义图例 我已经使用 ChartJS 提供的默认图例创建了甜甜圈 但我需要一些修改 我希望其价值高于汽车名称 另外 我不喜欢粘性图例 我想将其与甜甜圈分开 这样我就可以更改字体 框的样式 例如
  • 如何在 jQuery 中检查复选框是否被选中?

    我需要检查checked复选框的属性 并使用 jQuery 根据选中的属性执行操作 例如 如果age复选框被选中 然后我需要显示一个文本框来输入age 否则隐藏文本框 但下面的代码返回false默认情况下 if isAgeSelected
  • 从 Node.js 调用 execl、execle、execlp、execv、execvP 或 execvp 的方法

    POSIX 系统公开了一系列exec函数 允许人们将可能不同的东西加载到当前进程中 保留打开的文件描述符 进程标识符等 可以出于多种原因执行此操作 在我的情况下 这是引导 我想更改我自己的进程的命令行选项 然后在现有进程上重新加载它 这样就

随机推荐

  • 如何通过Hibernate获取数据库版本?

    有没有办法通过Hibernate 3 2 API获取底层数据库版本的一些信息 我未能在这里和 javadoc 中找到相关位 获取数据库引擎的版本是特定于实现的 这意味着没有获取版本的共享方法 因此 Hibernate 无法真正提供 API
  • 淡入时的 ScrollTop 引导框模式

    我使用 bootbox js 制作模态 但是当模态淡入并且内容太长时 滚动条会到达底部按钮的级别 当模态出现时 我需要滚动条保持在顶部 我已经解决了添加 off shown bs modal 在 bootbox dialog 之后 boot
  • 使用 webview 显示来自 sdcard 的图像不起作用

    我已经在 sdcard 根目录中下载了 map750 png 文件 但是当我尝试在带有一些文本的 Web 视图中显示它时 只显示文本 你能帮我找出代码中的错误吗 谢谢 setContentView R layout webview mWeb
  • AVPlayer audioSessionGotInterrupted 从后台唤醒时的通知

    我使用 AVAudioPlayer 来播放音频 我启用了背景音频并且音频会话配置正确 我实施了audioSessionGotInterrupted音频会话中断时收到通知的方法 这是我当前的代码 objc private func audio
  • 是否可以从 qt QColumnView 中删除预览小部件?

    我需要在 qt 视图中显示一组分层数据 我正在使用 QColumnView 来显示模型 但是 有一个功能可以使视图中的最后一列被降级为预览小部件 有可能隐藏这一点吗 例如 类似于 view setPreviewWidget NULL 尽管这
  • Python 从动态文件名导入

    我处于以下情况 我有一个 python 脚本main py 根据配置文件运行一些操作 配置文件本身就是一个 python 脚本 类 我希望能够从命令行传递不同的配置文件作为参数并将其导入主脚本中 python 中是否可以动态加载类 如果是这
  • 在运行时将 scala 3 代码从字符串解析为 Scala 3 AST

    我的目标是将 Scala 3 代码作为字符串获取 并在运行时将其解析为 Scala 3 的抽象语法树 在此过程中 如果代码存在编译错误 我应该将其作为某些异常的一部分 更大的目标是如果 scala 代码有效 则最终得到 Expr T 并通过
  • 将包裹的物品居中放置在弹性盒之间的空间中

    对于导航部分 我希望它使用space between理由 对于导航可能需要换行的较小显示器 我希望这些项目能够自行居中 而不是单独排成一行时粘在左侧 nav display flex width 100 flex flow row wrap
  • document.write() 会造成什么损害? [复制]

    这个问题在这里已经有答案了 此刻发生了什么不好的事情document write 被调用 我听说过一些关于document write对 DOM 或 Javascript 库的使用产生不利影响 我面前有一个问题 我怀疑它是相关的 但无法找到
  • SQL - 合并重叠数据

    我在 SQL Server 中有一个简单的数据集 如下所示 ROW Start End 0 1 2 1 3 5 2 4 6 3 8 9 Graphically the data would appear like this 我想要实现的是折
  • C 中的非阻塞睡眠定时器

    我正在为 Windows 寻找一个很好的 C 语言非阻塞睡眠定时器 目前我正在使用sleep 10 这当然是一个阻塞计时器 另外 我希望它不消耗系统资源 就像我的睡眠计时器一样 它不使用任何我满意的 CPU 或系统资源 那么 我可以使用的最
  • Zebra iMZ320 无法理解命令 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在尝试将标签从 Android
  • 如何将容器推送到 Google 容器注册表(无法创建存储库)

    编辑 我只是将其归咎于平台不一致 我现在已经放弃推送到 Google Cloud Container Registry 而是创建了一个 Ubuntu VM 我正在其中执行此操作 出于前面所述的原因 我也投票决定结束这个问题 并且因为这可能应
  • 如何防止加载meteor.local(使用phonegap构建ios应用程序时)

    这是我问的问题的延伸here https stackoverflow com questions 28843616 using meteor app on ipad that was deployed to remote server wi
  • 实体框架表每种类型的性能

    所以事实证明 我是最后一个在实现 TPT 每个类型的表 继承时发现 Microsoft 实体框架中存在的基本层的人 构建了一个包含 3 个子类的原型 基表 类由 20 多列组成 子表由约 10 列组成 一切都运行良好 我继续研究应用程序的其
  • 如何获取对象构造函数的参数名称(反射)? [复制]

    这个问题在这里已经有答案了 假设我以某种方式从其他类获得了对象引用 Object myObj anObject 现在我可以获得这个对象的类 Class objClass myObj getClass 现在 我可以获得该类的所有构造函数 Co
  • 如何在评估 Click cli 函数后继续执行 Python 脚本?

    假设我在文件中定义了一个基本的 click CLI 命令cli py import click click command click option test option def get inputs test option return
  • 将所有工作表中的值替换为新值

    我有大约 40 个电子表格 每个电子表格最多包含 300k 行 x 93 列 当前 大约有 11 亿个数据点 我需要检查每个单元格 并确定单元格是否包含 8 个特殊字符之一 这些字符在电子表格的导入中已被弄乱 这是一项每天需要运行多次的任务
  • React-Bootstrap 导致左侧和右侧有边距

    我在用着React Bootstrap https react bootstrap github io 在我的 React 应用程序中 它导致左侧和右侧有边距 我正在使用以下代码 import React Component from re
  • node.js mongodb - collection.find().toArray(callback) - 回调不会被调用

    我刚刚开始使用 mongodb 但在尝试在集合上使用 find 时遇到问题 我创建了一个数据访问对象 它打开一个特定的数据库 然后让您对其执行操作 这是代码 The 构造函数 var DataAccessObject function db