Node.js 10:DynamoDB为什么将函数多次赋予成功

我正在编写Node js 10.x lambda函数以将详细信息放入DynamoDB表中。

  

下面是代码

import os
import subprocess
import tkinter as tk
from tkinter import *
from tkinter import ttk

class ScrolledFrame(tk.Frame):

    def __init__(self,parent,vertical=True,horizontal=False):
        super().__init__(parent)

        # canvas for inner frame
        self._canvas = tk.Canvas(self)
        self._canvas.grid(row=0,column=0,sticky='news') # changed

        # create right scrollbar and connect to canvas Y
        self._vertical_bar = tk.Scrollbar(self,orient='vertical',command=self._canvas.yview)
        if vertical:
            self._vertical_bar.grid(row=0,column=1,sticky='ns')
        self._canvas.configure(yscrollcommand=self._vertical_bar.set)

        # create bottom scrollbar and connect to canvas X
        self._horizontal_bar = tk.Scrollbar(self,orient='horizontal',command=self._canvas.xview)
        if horizontal:
            self._horizontal_bar.grid(row=1,sticky='we')
        self._canvas.configure(xscrollcommand=self._horizontal_bar.set)

        # inner frame for widgets
        self.inner = tk.Frame(self._canvas)
        self._window = self._canvas.create_window((0,0),window=self.inner,anchor='nw')

        # autoresize inner frame
        self.columnconfigure(0,weight=1) # changed
        self.rowconfigure(0,weight=1) # changed

        # resize when configure changed
        self.inner.bind('<Configure>',self.resize)

        # resize inner frame to canvas size
        self.resize_width = False
        self.resize_height = False
        self._canvas.bind('<Configure>',self.inner_resize)

    def resize(self,event=None): 
        self._canvas.configure(scrollregion=self._canvas.bbox('all'))

    def inner_resize(self,event):
        # resize inner frame to canvas size
        if self.resize_width:
            self._canvas.itemconfig(self._window,width=event.width)
        if self.resize_height:
            self._canvas.itemconfig(self._window,height=event.height)

managment = ["MAIN","NAV","OUTPUT","OUTPUTSPARE","GATEWAY","Sync1","Sync2"]
servers = ["recon01","recon02","recon03","recon04","recon05","recon06","recon07","recon08","recon09","recon10","recon11","recon12","render01","render02","storinator"]
FGCs =["fgc01","fgc02","fgc03","fgc04","fgc05","fgc06","fgc07","fgc08","fgc09","fgc10","fgc11","fgc12","fgc13","fgc14","fgc15","fgc16","fgc17","fgc18","fgc19","fgc20","fgc21","fgc22","fgc23","fgc24","fgc25","fgc26","fgc27","fgc28","fgc29","fgc30","fgc31","fgc32","fgc33","fgc34","fgc35","fgc36","fgc37","fgc38","fgcspare1","fgcspare2","fgcspare3","fgcspare4"]
tests = ["Network","GPU","Time","Gidel","snapshot","Disks"]
testbuttons = []
serverbuttons = []
managebuttons = []
fgcbuttons = []

class mainwindow:
    global test    
    global testbuttons
    global managment
    global managebuttons
    global FGCs

    def __init__(self,master):
        self.master = master
        master.title("System Report Tool")
        master.geometry("1000x500")

        # --- top ---

        self.Tests = ttk.LabelFrame(root,text="Tests")
        self.Tests.pack(anchor='w',pady=20)

        for test in tests:
            testcheck = ttk.Checkbutton(self.Tests,text=test)
            testcheck.pack(side='left',anchor="n")
            testbuttons.append(testcheck)

        def select_tests():
            for test in testbuttons:
                test.invoke()

        selecttests = ttk.Checkbutton(root,text="Select All",command=select_tests)
        selecttests.place(x=260,y=16)

        # --- middle ---

        self.Managment = ttk.LabelFrame(root,text="Managment")
        self.Managment.configure(width=10,height=20)
        self.Managment.pack(anchor='nw',side='left')

        for manage in managment:
            managecheck = ttk.Checkbutton(self.Managment,text=manage)
            managecheck.pack(anchor="w")
            managebuttons.append(managecheck)

        def select_manage():
            for manage in managebuttons:
                manage.invoke()

        selectmanage = ttk.Checkbutton(self.Managment,command=select_manage)
        selectmanage.pack()

        self.FGCs = ttk.LabelFrame(root,text="FGCs")
        self.FGCs.configure(width=10,height=20)
        self.FGCs.pack(fill='y',expand=True,side='left',anchor='w')

        self.sf = ScrolledFrame(self.FGCs)
        self.sf.pack(fill='y',expand=True)

        for fgc in FGCs:
            fgccheck = ttk.Checkbutton(self.sf.inner,text=fgc)
            fgccheck.pack(anchor="w")
            fgcbuttons.append(fgccheck)

        def select_fgc():
            for fgc in fgcbuttons:
                fgc.invoke()

        selectfgc = ttk.Checkbutton(self.sf.inner,command=select_fgc)
        selectfgc.pack()


root = Tk()
Window = mainwindow(root)
root.mainloop()
  

我对成功返回的随机数感到友善

     

输出执行1

const AWS = require('aws-sdk');
var db = new AWS.DynamoDB.DocumentClient();
var tableName="xyz";

exports.handler = async (event) => {
    // TODO implement
    console.log("Event: "+ JSON.stringify(event));

    var response = {
        statusCode: 200,"headers": {
            "access-control-allow-origin" : "*","access-Control-Allow-Credentials" : true
        },};
    await db.put({
        TableName: tableName,Item: {
            userid: event.userid,}
    },(error,data) => {      
        if (error) {
            console.log("error:"+ error);
        }
        else{
            console.log("Success");
        }
    }).promise();

    return response;
};
  

输出执行2

2019-11-07T07:03:45.388Z    f451dfc1-01ea-41d0-a998-945cb0f18be1    INFO    Success
2019-11-07T07:03:45.510Z    f451dfc1-01ea-41d0-a998-945cb0f18be1    INFO    Success
2019-11-07T07:03:45.511Z    f451dfc1-01ea-41d0-a998-945cb0f18be1    INFO    Success
  

输出执行3

2019-11-07T07:08:19.270Z    3ce51f5d-bbbc-4dd6-b46f-2149ee9bb9cf    INFO    Success

** 有人知道这个问题的原因吗?

我对Node js 10.x比较陌生。所以如果我错过了代码,请帮我 **

ptpstao 回答:Node.js 10:DynamoDB为什么将函数多次赋予成功

您同时使用callback and promise,请删除回调。

您可以尝试类似

exports.handler = async (event,context) => {
    const params = {
        TableName: tableName,Item: {
            userid: event.userid,}
    };

    try {
        const data = await dynamoDB.put(params).promise();
        console.log("Data: ",data);
    } catch(error) {
        console.error("Error:",error);
    }
}
本文链接:https://www.f2er.com/3146822.html

大家都在问