【问题标题】:how to remove _id from create replay mongodb node js如何从创建重播mongodb节点js中删除_id
【发布时间】:2020-11-21 23:54:50
【问题描述】:
exports.createDD_PR_addresstype = asyncHandler(async (req, res, next) => {

  const dropdowns = await DD_PR_addresstype.create(req.body);
  res.status(200).json({
    success: true,
    data: dropdowns
  });
});

重播

{
    "success": true,
    "data": {
        "_id": "5f252a444824ac0164195c1a",
        "label": "Battery",
        "company_id": "5f17e0f4d6eded0db090b272",
        "value": 1,
        "__v": 0
    }
}

我只想显示标签和值。是否有任何预功能可用于选择创建的重播或者我必须使用单独的查找查询

【问题讨论】:

    标签: node.js mongodb projection


    【解决方案1】:

    您可以destructure查询回复:

    const { label, value } = await DD_PR_addresstype.create(req.body);
    
    res.status(200).json({
      success: true,
      data: { label, value }
    });
    

    但这只是减少以下代码的一种方式:

    data: {
      value: dropdowns.value,
      label: dropdowns.label
    }
    

    如果您希望稍后仅使用给定的道具检索文档,那么projection 答案(在两者之间已被删除)是可行的方法。

    由于其他projection 答案已被删除,我将其添加到此处(以_id 为例):

    const dropdowns = await DD_PR_addresstype.find( { _id: "5f252a444824ac0164195c1a" }, { label: 1, value: 1 } )
    

    【讨论】:

    • 是的,我现在使用的第二种方法,但是如果 json 重播主体有很多字段,我可以只删除一两个字段,例如选择 _id 并删除它是可能的吗?
    • 这样吗? const dropdowns = await DD_PR_addresstype.find( { _id: "5f252a444824ac0164195c1a" }, { _id: 0 } ) 。这将返回除 _id 之外的所有道具
    • 是的,在创建方法中没有使用 id 调用第二个查找查询
    • 我不认为你可以在创建过程中直接使用projection。但是您可以为 Schema 定义一个自定义实例方法,该方法保存您的文档并仅返回所需的道具。我不是专家,可能还有其他方法。见here
    猜你喜欢
    • 2019-08-02
    • 1970-01-01
    • 2013-08-29
    • 2019-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    相关资源
    最近更新 更多