Mongoose - 遍历对象

2024-05-27

在 node.js 上使用 mongoose 我试图找到玩家 game.players.id 等于我传递的 id 的所有游戏。

Schema:

var Game = mongoose.Schema({

    id: String,
    date: { type: Date, default: Date.now },
    game: Object,
    isOnline: Boolean

});

我不确定这个函数有什么问题,但它返回空数组:

var specificGameStatistics = function (user, game) {
    var deferred = q.defer()
    Game.find({ "game.players.id" : user, "game.rules.gameType": game.gameType, "game.rules.quatro": game.quatro}, function(err, data) {
        deferred.resolve(data);
    });
    return deferred.promise;
}
////////////////////USAGE///////////////
var testGame = {rules: {gameType : 1, quatro : null}}
UsersCtrl.specificGameStatistics(data.id, testGame).then(function(userData) {
    console.log(userData);
});

这是已保存在数据库中的游戏示例:

{
"isOnline" : true,
"game" : {
    "numberOfPlayers" : NumberInt("1"),
    "players" : [
        {
            "id" : "58a2c0ecd8ba9f8602836870",
            "name" : "PlayerName",
            "type" : NumberInt("1"),
            "avgStatistic" : "30.00",
            "numbersHit" : NumberInt("1"),
            "totalScore" : NumberInt("60"),
            ..............................
        }
    ], //there is more players here
    "rules" : {
        "gameType" : NumberInt("1"),
        "quatro" : null,
        "rounds" : NumberInt("1"),
    } // there is more in JSON object
    ...............................
"_id" : ObjectId("58aed4aeea20ecdf0c426838"),
"date" : ISODate("2017-02-23T13:25:18.284+01:00"),
"__v" : NumberInt("0")
}

我已经测试了玩家 ID 是否相等,但它仍然返回空数组。测试代码:

///////////TEST//////////////
console.log(data.id, "58a2c0ecd8ba9f8602836870");
if (data.id === "58a2c0ecd8ba9f8602836870") {console.log("this is true");}
var testGame = {rules: {gameType : 1, quatro : null}}
UsersCtrl.specificGameStatistics(data.id, testGame).then(function(userData) {
    console.log(userData);
});
//////////TEST///////////////

它返回:
58a2c0ecd8ba9f8602836870 58a2c0ecd8ba9f8602836870
这是真实的
[]

-------------------------------------------------- -------------------------------------------------- ----

Answer:在 Deividas Karžinauskas 的帮助下,解决方案是:

Game.where('game.players.id', user).where('game.rules.gameType', game.rules.gameType).find({}, function(err, data) { //, "game.rules.quatro": game.quatro
    deferred.resolve(data);
});

这是因为您指定的附加规则({gameType : 1, quatro : null}),它不存在于玩家对象(

{
    "id" : "58a2c0ecd8ba9f8602836870",
    "name" : "PlayerName",
    "type" : NumberInt("1"),
    "avgStatistic" : "30.00",
    "numbersHit" : NumberInt("1"),
    "totalScore" : NumberInt("60"),
    ..............................
}

)。您只需通过 ID 查找游戏即可确认这一点。

如果您想添加这些规则,那么您应该找到所有符合这些规则的游戏,然后查找特定玩家的游戏。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mongoose - 遍历对象 的相关文章

随机推荐

  • 删除已从另一个下拉菜单中选择的下拉值

    我在网上搜索了一段时间 但仍然找不到答案 我的网站上有三个下拉菜单 我使用它们来接受用户首选项 以便用户可以控制结果的输出 所以我想知道如果在其中一个下拉列表中选择了该值 是否可以从其他两个下拉列表中取出该值 例如 如果用户在第一个电影中选
  • Core Data 与 SQLite 3 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 收到 GCM 通知时启动应用程序

    我有 GCM 通知实施 我知道客户端应用程序无论处于前台 后台还是终止状态都会收到通知 我想知道的是 当应用程序处于终止状态时 如何在收到通知时启动我的应用程序 在消息接收器中 我执行以下操作 final Intent notificati
  • HttpContext 中需要什么才能允许 FormsAuthentication.SignOut() 执行?

    我正在尝试为我们的注销方法编写一个单元测试 除其他外 它FormsAuthentication SignOut 然而 它抛出一个System NullReferenceException 我创建了一个模拟 HttpContext 使用起订量
  • 如何使用 Jboss AS 7.1 启用自定义 log4j

    我尝试了几种选择 但一切对我都不起作用 以前 我在 Tomcat 6 7 中使用了相同的 log4j xml 简单的通用配置 并且我可以通过更新 log4j xml 来控制根日志记录和应用程序日志记录 当我使用 JBoss AS 7 1 部
  • Shiny 中的模态对话框:可以调整宽度但不能调整高度

    在我的 Shiny 应用程序中 我有几个来自闪亮BS 包的模式窗口 我可以像这样调整这些模式窗口的宽度 tags head tags style HTML modal lg width 1200px abs 1 background col
  • 是一对一的关系不好的策略

    用户始终拥有一个钱包 一个钱包始终属于一位用户 由于我想分离与钱夹相关的属性 我创建了 Wallet 对象并能够跟踪钱交易 我创建了 public Wallet Entity
  • Hibernate 命名查询使用 Like 和 % % 运算符?

    在我的 Hibernate JPA 示例代码中 public List
  • 使用抽象类作为模板类型

    我对c 还是很陌生 来自java 我有一个 stl 类型列表Actor When Actor仅包含 真实 方法就没有问题 我现在想将这个类扩展到几个类 并且需要将一些方法更改为抽象的 因为它们不再具有具体的意义 正如我 从文档中 预期的那样
  • Java分数计算器

    我对 Java 编程还很陌生 我的 AP 计算机编程课程有作业要完成 所以请耐心等待 我必须弄清楚如何将两个分数相乘 我想知道是否有任何方法可以在方法内部声明变量并在该方法外部使用它 我在介绍方法中的 while 循环 谢谢您 希望这不会令
  • 如何阻止gradle每次都下载

    我已经在 Ubuntu 16 04 中安装了 gradle 这是输出gradle v Gradle 2 10 Build time 2016 01 26 15 17 49 UTC Build number none Revision UNK
  • 实体框架中对象属性中的 NULL 值

    Tables Article Author Comment 1篇文章和1位作者可以有 评论 数据库中有 1 篇文章 1 位作者和 1 条评论 问题是 该代码 myBD my bd new myBD var articles by bd Ar
  • 系数函数速度慢

    请考虑 Clear x expr Sum x i i 15 30 CoefficientList expr x Timing Coefficient Expand expr x 234 Timing Coefficient expr x 2
  • 类型错误:“生成器”对象没有属性“__getitem__”

    我编写了一个应该返回字典的生成函数 但是当我尝试打印字段时出现以下错误 print row2 SearchDate TypeError generator object has no attribute getitem 这是我的代码 fro
  • numpy.nan_to_num - 'nan' 关键字无法识别

    当您尝试使用以下代码将 nan 值替换为自定义数值时 np nan to num exp allowance nan 9999 99 它产生以下错误 typeerror nan to num got an unexpected keywor
  • 丰富:数据表行跨度问题

    我需要创建一个 rich dataTable 甚至扩展 具有以下功能 我有一个公司类 其中包含产品对象的集合 我想展示下表 我仍然没有弄清楚如何使用子表执行此操作 在所有示例中 我发现子表具有与主表完全相同的列 据推测 我需要在前两列中使用
  • 如何使用 Swift 将文本复制到剪贴板/粘贴板

    我正在寻找一个干净的示例 说明如何将文本复制到 iOS 剪贴板 然后可以在其他应用程序中使用 粘贴 该功能的好处是可以快速复制文本 无需传统文本复制的标准文本突出显示功能 我假设关键课程位于UIPasteboard 但在中找不到相关区域他们
  • 使用 Spring Batch 将文件中的日期解析为 LocalDateTime

    我正在尝试使用 Spring Batch 读取包含日期的 CSV 文件 但在将日期解析为LocalDateTime Object 字段 日期 上的对象 目标 中的字段错误 拒绝值 2017 07 20 04 15 25 0 代码 typeM
  • Java:如何检测(并更改?)System.console 的编码?

    我有一个在控制台上运行的程序 其变音符号和其他特殊字符在 Mac 上以 的形式输出 这是一个简单的测试程序 public static void main String args System out println h h System
  • Mongoose - 遍历对象

    在 node js 上使用 mongoose 我试图找到玩家 game players id 等于我传递的 id 的所有游戏 Schema var Game mongoose Schema id String date type Date