javascript - 为什么默认参数值不起作用?
问题描述
我有一个从数据库中获取一些东西的函数。我想将函数设置为接受一个DBConnection
字符串参数和一个ProductID
参数,但是因为这很少提供,所以我想设置一个默认值。我尝试了以下方法:
const DBConfig = require('./db.config');
async function getProduct(DBConnection = DBConfig.SQLConnection, ProductID) {
console.log(ProductID) // says undefined
await DBConnection.connect()
......
}
我通过这样做从另一个文件中调用上述函数:
Product = await api.getProduct({ProductID: req.body.ProductID})
出于某种原因,执行上述操作不起作用。也就是说,我总是undefined
在控制台中获取ProductID
.
如果我只是简单地执行以下操作,那么我确实会ProductID
在控制台中打印正确的值:
const DBConfig = require('./db.config');
const DBConnection = DBConfig.SQLConnection,
async function getProduct(ProductID) {
console.log(ProductID) // prints in the console as { ProductID: '1234' }
await DBConnection.connect()
......
}
我正在使用带有 babel-loader 的 Webpack。我不认为这是一个转译问题,但不确定。有任何想法吗?在我的 Webpack 配置中,我有这个来处理js
文件:
{
test: /\.js$/,
include: [ srcPath ],
exclude: ['/node_modules/','/src/test'],
use: {
loader: 'babel-loader',
options: {
presets: ["@babel/preset-env"] //Preset used for env setup
}
}
}
解决方案
我认为您希望对参数getProduct
进行解构:
function getProduct({DBConnection = DBConfig.SQLConnection, ProductID}) {
...
}
然后你可以这样做:
Product = await api.getProduct({ProductID: req.body.ProductID})
不应该是 webpack 或 babel 问题
推荐阅读
- makefile - Makefile 变量的交互式输入
- gitlab - gitlab 中的自动发行说明
- r - 通过变量从r中的命名向量中提取单词
- python - 连接到 Django 数据库的内部服务器错误
- javascript - 如何在 Angular 8 中启动应用程序时首先加载数据服务
- r - 使用 geom_line 和 geom_point 更改图例符号“a”
- kubernetes - 无法使用 Helm Push Artifactory 插件将 helm 包存档推送到工件
- flutter - 在网格视图的中心底部显示小部件
- android - Firebase 通知图标 Unity
- sql - 返回关键字之前的光标无限循环