【问题标题】:Get a list that contains only defined "disable" property获取仅包含定义的“禁用”属性的列表
【发布时间】:2021-11-19 11:06:00
【问题描述】:

我目前正在开发 Node.js / Typescript / Mongoose 网络服务。

我在 MongoDB 中的所有对象都有一个名为“disable”的 Date 类型的属性。

默认情况下,“禁用”设置为未定义。但是当我们删除一个对象时,我们传递给禁用,删除的 new Date()。

由于我们没有真正的删除,我们需要默认发回一个列表,其中包含“禁用”为未定义的对象。还有一个包含“禁用”为未定义的对象列表。

我正在使用 Node/Typescript/Mongoose。

你知道怎么做吗?

对不起,我的英语很差,希望你能帮助我。非常感谢!

更新:我想对请求使用过滤器

My function to filter on undefined or defined "disable"

但是 "!undefined" 发送错误

!undefined error

更新 2:

感谢https://docs.mongodb.com/manual/reference/operator/query/ne/

enter image description here

【问题讨论】:

  • 请将您的代码和错误粘贴到问题中,而不是使用图像。

标签: javascript node.js typescript mongodb mongoose


【解决方案1】:

您可以在模型上运行 .find() 然后减少响应以过滤掉禁用属性设置为未定义的对象

let documents = await Model.find();

let disabledDocs = documents.reduce((all, obj) => {
   return obj.disable !== undefined ? [...all, obj] : all;
}, []);

类似的东西。

【讨论】:

    【解决方案2】:

    据我了解,您想要的是这样的:

    ....
    const allDocs = await MyModel.find({})
    const deletedDocs = allDocs.filter(doc => doc.disable === undefined)
    const undeletedDocs = allDocs.filter(doc => doc.disable !== undefined)
    
    .... some logic here
    
    res.json({deletedDocs, undeletedDocs })
    ....
    

    如果您接受答案,请在 cmets 中告诉我

    【讨论】:

    • 如果这解决了您的问题,请告诉我 (✓)
    猜你喜欢
    • 1970-01-01
    • 2020-05-30
    • 2016-07-07
    • 2012-10-18
    • 1970-01-01
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    相关资源
    最近更新 更多