gpt4 book ai didi

node.js - 以下划线为前缀的属性的 eslint 问题

转载 作者:行者123 更新时间:2023-12-04 12:39:49 25 4
gpt4 key购买 nike

我是 NodeJS 和 MongoDB 的初学者,在从一些在线资源中学习的同时,我创建了 mongoose 模式:

const mongoose = require('mongoose')

const blogSchema = mongoose.Schema({
title: String,
author: String,
url: String,
likes: Number,
})

blogSchema.set('toJSON', {
transform: (document, returnedObject) => {
returnedObject.id = returnedObject._id.toString()
delete returnedObject._id
delete returnedObject.__v
}
})


但是 eslint 不断给我错误:
  • returnedObject.id , delete returnedObject._iddelete returnedObject.__v - 分配给函数参数 'returnedObject'.eslint(no-param-reassign) 的属性
  • returnedObject._idreturnedObject.__v - '_id'.eslint(no-underscore-dangle)
  • 中意外的悬空 '_'

    snapshot of the eslint errors

    删除 _id 的正确方法是什么?和 __v字段并重新分配 _ididreturnedObject ?

    我正在使用基于 airbnb 的 eslint 配置( devDependencies 来自 package.json ):

        "eslint": "^6.8.0",
    "eslint-config-airbnb-base": "^14.0.0",
    "eslint-plugin-import": "^2.20.1",

    最佳答案

    正如@CherryDT 和@slebetman 在上述评论中所建议的那样 - 代码没有任何问题,问题仅与 eslint 配置有关。

    我想出了以下解决方案:

    禁用线路

    在您看到此错误的行上方添加注释:

    // eslint-disable-next-line no-param-reassign, no-underscore-dangle
    returnedObject.id = returnedObject._id.toString()

    或在该行旁边:
    returnedObject.id = returnedObject._id.toString() // eslint-disable-line no-param-reassign, no-underscore-dangle

    禁用文件

    在文件的第一行添加注释:
    /* eslint-disable no-param-reassign, no-underscore-dangle */

    关闭 eslint 配置中的规则(通常是 .eslintrc.js.eslintrc.yml 或类似名称 .eslintrc.* )
    rules: {
    no-underscore-dangle: off,
    no-param-reassign: off,
    }

    上面的例子是 yml配置,类似的事情可以用其他配置来完成。

    前两个解决方案不太适合庞大的代码库,因此我建议使用第三个选项。

    *可以在同一个注释中关闭多个错误,用逗号分隔。

    关于node.js - 以下划线为前缀的属性的 eslint 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60584060/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com