【问题标题】:Meteor / MongoDB - How to prove whether any item in an array is equal to a specific value and than $pull an item from another array in case 'true'?Meteor / MongoDB - 如何证明数组中的任何项目是否等于特定值,而不是在“真”的情况下从另一个数组中提取项目?
【发布时间】:2017-07-07 06:18:30
【问题描述】:

我的问题是,我写了以下代码:

Meteor.methods({

    'pushItems': function (itemId) {
    var specificValue = "12";

    if (this.userId) {
      userManagement.update({
        '_id': this.userId
    }, {
        $push: {
          'itemIds': itemId,
          'values': specificValue
                   }
               }
            );
         }
       }
    });

在我调用此方法后,具有“itemId”的一项存储在数组“itemIds”中,而一项具有“12”的项存储在数组“values”中。所有这些都发生在一个用户对象中。

现在,我需要编写一个函数来检查“12”是否在用户的“值”内,如果这是“真”,它应该将按时间顺序添加的第一个 itemId [0] 从数组中拉出itemIds'。

【问题讨论】:

    标签: arrays mongodb meteor methods collections


    【解决方案1】:

    下面的方法会在values数组中找到包含参数(值)的文档,并从itemId数组中删除[0]处的项

    Meteor.methods({
        'pullItems': function (value) {
            return userManagement.update(
                { values: value }, 
                { $pop: { itemId: -1 }}
            );
        } 
    });
    

    【讨论】:

    • 非常感谢。 $pop 命令是搜索的内容,并解决了我至少 50% 的问题。但是,{ values: value } 不起作用(“意外标识符”)并且应用程序崩溃。也许有一种方法可以使用“if”和搜索/查找功能来解决这个问题?事实上,我只需要声明一个变量并说'如果这个变量在'values'中,则执行$pop 工作。我正在考虑它,但我不够专业:D 此外,我有一个一般性问题(我知道这是一个很愚蠢的问题):“返回”到底是什么?谢谢。
    • 没有问题!我不确定为什么values: value 不起作用。这应该在对象的values 数组中搜索传递给该方法的“值”。尝试if 声明,如果您无法管理它,请在此处评论,我会帮助您。 return 语句基本上只是将更新调用的结果返回给客户端。你真的不需要return 声明,但我把它放在那里作为习惯
    • 啊,我知道为什么价值观不起作用了。我只是忘了从 Meteor.call 传递它。但它不只是在值数组中找到“值”。它将一个全新的文档写入该用户并删除其他文档(我猜它会删除它们,因为我们省略了 $push 或某事。)。但是,我不需要向用户写入任何新文档,我只需要知道该值是否在那里,如果是这种情况,它应该 $pop in 'itemIds'。我将尝试编写if- 函数并将其发布以说明我的意思。谢谢!
    • 所以,我知道它不起作用,但它应该澄清我的需求: Meteor.methods({ 'pullItems': function () var value = "Int32"; { if (this. userId && userManagement.find({ "values": {$gt: value} === true})) { userManagement.update({ '_id': this.userId }, { $pop: { 'itemId': -1 } } ); }; } }); .我需要找出 ItemId-Array 中是否有大于 value 的项。如果这是真的,请执行“userManagement.update ({$pop job})。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-24
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 2015-11-08
    • 2017-07-24
    • 2021-05-15
    相关资源
    最近更新 更多