javascript - 类型错误:X 不是函数。Node.js - 快递
问题描述
此代码是 Web Api Controller 的有效解决方案。当我尝试实现关注点分离和fetchWebApi(url)
从const { fetchWebApi } = require('./fetchWebApiController')
. 它给了我以下错误:curValue
不是函数。不知道为什么它说功能。curValue
不是函数。它只是一个变量,用作变量,从不作为函数调用。这是github项目的链接。
webApiController.js
const axios = require('axios')
// const { fetchWebApi } = require('./fetchWebApiController')
const { Stock } = require('../models/Stock')
exports.getWebApi = (req, res) => {
let curValue = req.params.symbol
console.log(`${curValue} - seacrhBox value`)
console.log(typeof curValue)
const urlCompact = `https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=${curValue}&outputsize=compact&apikey=6BUYSS9QR8Y9HH15`
async function fetchWebApi(url) {
try {
const response = await axios.get(url)
return parsedData = await Object.keys(response.data['Time Series (Daily)']).map(date => {
return {
date: Date.parse(date),
open: Math.round(parseFloat(response.data['Time Series (Daily)'][date]['1. open']) * 100) / 100,
high: Math.round(parseFloat(response.data['Time Series (Daily)'][date]['2. high']) * 100) / 100,
low: Math.round(parseFloat(response.data['Time Series (Daily)'][date]['3. low']) * 100) / 100,
close: Math.round(parseFloat(response.data['Time Series (Daily)'][date]['4. close']) * 100) / 100,
volume: parseInt(response.data['Time Series (Daily)'][date]['5. volume'])
}
})
} catch (ex) {
console.log(`fetchWebApi error: ${ex}`)
}
}
(async function creatStock() {//line33
try {
const webApiData = await fetchWebApi(urlCompact)
const stock = new Stock({
symbol: curValue,
data: webApiData
})
const query = { symbol: `${curValue}` }
const update = { $addToSet: { data: stock.data } }
const options = { upsert: true, new: true }
const stockResult = await Stock.findOneAndUpdate(query, update, options)
console.log('Saved the symbol web TO db', stockResult.symbol)
return res.send(webApiData)
} catch (ex) {
console.log(`creatStock error: ${ex}`)
}
})()
}
错误
TypeError: curValue is not a function
at exports.getWebApi (/mnt/c/Users/john/Desktop/node/controllers/webApiController.js:33:3)
at Layer.handle [as handle_request] (/mnt/c/Users/john/Desktop/node/node_modules/express/lib/router/layer.js:95:5)
at next (/mnt/c/Users/john/Desktop/node/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/mnt/c/Users/john/Desktop/node/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/mnt/c/Users/john/Desktop/node/node_modules/express/lib/router/layer.js:95:5)
at /mnt/c/Users/john/Desktop/node/node_modules/express/lib/router/index.js:281:22
at param (/mnt/c/Users/john/Desktop/node/node_modules/express/lib/router/index.js:354:14)
at param (/mnt/c/Users/john/Desktop/node/node_modules/express/lib/router/index.js:365:14)
at Function.process_params (/mnt/c/Users/john/Desktop/node/node_modules/express/lib/router/index.js:410:3)
at next (/mnt/c/Users/john/Desktop/node/node_modules/express/lib/router/index.js:275:10)
at Function.handle (/mnt/c/Users/john/Desktop/node/node_modules/express/lib/router/index.js:174:3)
at router (/mnt/c/Users/john/Desktop/node/node_modules/express/lib/router/index.js:47:12)
at Layer.handle [as handle_request] (/mnt/c/Users/john/Desktop/node/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/mnt/c/Users/john/Desktop/node/node_modules/express/lib/router/index.js:317:13)
at /mnt/c/Users/john/Desktop/node/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/mnt/c/Users/john/Desktop/node/node_modules/express/lib/router/index.js:335:12)
解决方案
推荐阅读
- android - Android:当 addOnItemTouchListener 设置为它时,无法突出显示 recyclerview 中的按下项目
- arduino - 使用 Raspberry pi/arduino/esp32 实现家庭自动化的 Google API
- verilog - Verilog:在向量中分配一根线高,其余为低?
- c++ - 可变参数模板:分组展开参数
- bash - 捆绑:找不到命令 - 在 bash 脚本中,Ubuntu 16.04
- kubernetes - Hazelcast kubernetes 使用 API 和 envoy 代理作为 sidecar 发现
- angular - 如果其他事件先运行,则角度阻止事件
- mysql - 使用嵌套查询和内部联接清理 SQL 查询 [改写]
- python - 无法解开旧数据
- c# - 我可以告诉 C# 可空引用方法实际上是对字段的空检查吗