簡體   English   中英

我如何讓我的代碼中的訪客計數器顯示在客戶端,或者我如何讓我的價值成為 integer

[英]How do i get my visitor counter in my code to show up on the client side or how do i get my value to become an integer

我的代碼的目的是進入數據庫並將計數器的值增加 1,而當我的代碼這樣做時,我在向客戶端顯示此數據時遇到了問題。 我不能只 json.dumps 我的響應變量,因為 dynamodb 出於某種原因自動將我的值轉換為小數。 我能夠使用responseBody = json.dumps({"ID": int(response["Attributes"]["Counter"])})打印它,但是它顯示在網頁上的 {"ID": "x"} 我只想要正在增加的 X 值,而不是其他任何東西。 有誰知道我該怎么做? 將不勝感激。 我的 python 代碼的全部內容如下。

import json
import boto3

dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('Visitors')

Key = {"ID": {"0"}}
def lambda_handler (event, context):

    response = table.update_item(
        Key={
            "ID": 0
        },
        ExpressionAttributeNames = {
            "#c": "Counter"
        },
        UpdateExpression= "set #c = #c + :val",
        ExpressionAttributeValues={
            ":val": 1
        },
    ReturnValues= "UPDATED_NEW"
    )
   
    responseBody = json.dumps({"ID": int(response["Attributes"]["Counter"])})
    
    return {
        "statusCode": 200,
        "headers": {
            'Access-Control-Allow-Headers': 'application/json',
            'Access-Control-Allow-Origin': '*',
            'Access-Control-Allow-Methods': 'OPTIONS,POST,GET'
            },
        'body': (responseBody)
        }

您收到{"ID": "x"}因為這就是您要寫入正文的內容。 如果只想返回號碼,可以改成

responseBody = response["Attributes"]["Counter"]

return {
    "statusCode": 200,
    "headers": {
        'Access-Control-Allow-Headers': 'application/json',
        'Access-Control-Allow-Origin': '*',
        'Access-Control-Allow-Methods': 'OPTIONS,POST,GET'
    },
    'body': responseBody
}

您可能需要根據response["Attributes"]["Counter"]返回的內容將其轉換為字符串或進行其他調整。

本質是,您得到的正是您放入body屬性中的內容。 所以如果你不想有"ID":在那里,就把它留在外面。

只需將 response["Attributes"]["Counter"] 作為 responseBody 值返回,然后在 return 語句中將其傳遞到 tour body 中。 如果需要,您可以在返回之前將該值更改為字符串或 integer 或任何您需要的值。

暫無
暫無

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

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