簡體   English   中英

AWS Timestream - SDK V3 Nodejs,TimestreamWriteClient.send() - TypeError:command.resolveMiddleware 不是 function。 如何解決這個問題?

[英]AWS Timestream - SDK V3 Nodejs, TimestreamWriteClient.send() - TypeError: command.resolveMiddleware is not a function. How to solve this?

我在 NodeJs 14.x 中有以下 lambda NodeJs 14.x使用AWS SDK V3進行時間流插入過程:

'use strict'
// https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-timestream-write/index.html
const { TimestreamWriteClient } = require("@aws-sdk/client-timestream-write")

const client = new TimestreamWriteClient({ region: process.env.region  })


module.exports.fnPostElectricityTimestream = async event => {
  try {
    console.log('🚀 START fnPostElectricityTimestream')

    const jsonBody = event 
    const topic = jsonBody.topic
    const arrTopic = topic.split('/')
    let dbName = arrTopic[4]
    dbName = 'smaj56g' //Test

    const currentTime = Date.now().toString() // Unix time in milliseconds get jsonBody.e_timestamp
    const e_timestamp = (jsonBody.e_timestamp)*1000

    const dimensions = [{
        'Name': 'n',
        'Value': 'v' 
    }]
    const e_ch_1 = {
        'Dimensions':dimensions,
        'MeasureName': 'e_ch_1',
        'MeasureValue': '[1,2,3]',
        'MeasureValueType': 'VARCHAR',
        'Time': currentTime
    }  
    const records = [e_ch_1]
    const params = {
        DatabaseName: dbName,
        TableName:'e_ch_1_v_w',
        Records: records
    }
    const data = await client.send(params);
    console.log('data', data)

    return {
        message: ''
    }
  } catch (error) {
    console.log('🚀 fnPostElectricityTimestream - error.stack:', error.stack)
    return {
        message: error.stack
    }
  }
}

當我運行 lambda 這是我得到的消息:

2022-08-12T14:58:39.496Z    e578a391-06b4-48a9-9f9d-9440a373c19e    INFO    🚀 fnPostElectricityTimestream - error.stack: TypeError: command.resolveMiddleware is not a function
    at TimestreamWriteClient.send (/var/task/node_modules/@aws-sdk/smithy-client/dist-cjs/client.js:13:33)
    at Runtime.module.exports.fnPostElectricityTimestream [as handler] (/var/task/src/ElectricityTimestream/fnPostElectricityTimestream.js:38:31)
    at Runtime.handleOnceNonStreaming (/var/runtime/Runtime.js:73:25)

const data = await client.send(params)有一些東西。 我正在關注本文檔中的asyncawait代碼。

如何解決這個問題?

您需要在調用發送之前創建一個命令。

例如:

import { TimestreamWriteClient, CreateDatabaseCommand } from "@aws-sdk/client-timestream-write";

const params = {
  DatabaseName: dbName,
  TableName:'e_ch_1_v_w',
  Records: records 
} 

const command = new CreateDatabaseCommand(params);
const data = await client.send(command);

您當前的插入代碼是錯誤的。 為了在TimeStream中寫入記錄,您需要使用WriteRecordsCommand命令。 請參閱文檔以獲得更好的理解。 示例代碼:

import { TimestreamWriteClient, WriteRecordsCommand } from "@aws-sdk/client-timestream-write";

const client = new TimestreamWriteClient({ region: "REGION" });  //your AWS region
const params = {
  DatabaseName: dbName,       //your database
  TableName: tableName,       //your table name
  Records: records            //records you want to insert
} 

const command = new WriteRecordsCommand(params);
const data = await client.send(command);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM