一对多保存无回应(承诺)

时间:2018-09-17 13:59:52

标签: node.js mongodb typescript mongoose

我一直在用一个对象ID数组保存一个对象。我正在将node.js与restify和猫鼬一起使用。

我有很多服装选择的服装要求:

型号:

+

路由器:

import tkinter as tk
import pandas as pd
import os
from selenium import webdriver 
from selenium.common.exceptions import NoSuchElementException

class GUI: 
    def __init__(self,master):
        tk.Label(master, text="Input Path").grid(row=0, sticky="e")
        tk.Label(master, text="Output Path").grid(row=2, sticky="e")
        tk.Label(master, text="Output Filename").grid(row=4, sticky="e")

        self.ip_path_field = tk.Entry(master)
        self.op_path_field = tk.Entry(master)
        self.filename = tk.Entry(master)

        self.ip_path_field.grid(row=0, column=1, sticky="w")
        self.op_path_field.grid(row=2, column=1, sticky="w")
        self.filename.grid(row=4, column=1, sticky="w")

        tk.Button(master, text="Submit", fg="black", bg="white",
               command=self.scrapper).grid(row=5,columnspan=2)

    def scrapper(self): # changed function to a method.
        user_input = self.ip_path_field.get(0, "end")
        user_output = self.op_path_field.get(0, "end")
        filename = self.filename.get(0, "end")

        if os.path.exists(user_input):
            df = pd.read_excel(user_input, sheetname='Sheet1')
            print("File Found and We are Processing !")
        else:  
            print ("Input Directory does not exists.")

        os.chdir('C:/Users/chowdhuryr/Desktop/first automation')
        df = df[0:5]

        options = webdriver.ChromeOptions()
        options.add_argument("--headless")
        options.add_argument('window-size=1200x850')

        message = list()
        tier = list()
        wirecentre = list()

        for i in range(0,df.shape[0]):

            driver = webdriver.Chrome(executable_path='C:/Users/chowdhuryr/Desktop/first automation/chromedriver', chrome_options=options)
            driver.get('https://clec.att.com/facilitiescheck/facilities_chk.cfm') 
            street_address = driver.find_element_by_xpath('/html/body/form/table/tbody/tr[2]/td[2]/table/tbody/tr[1]/td[2]/input') 
            street_address.send_keys(df['CIRCUIT_LOC_ADDR'][i].split(',')[0]) 
            city=driver.find_element_by_xpath('/html/body/form/table[1]/tbody/tr[2]/td[2]/table/tbody/tr[2]/td[2]/input') 
            city.send_keys(df['CIRCUIT_LOC_ADDR'][i].split(',')[1]) 
            state = driver.find_element_by_xpath('/html/body/form/table[1]/tbody/tr[2]/td[2]/table/tbody/tr[4]/td[2]/select') 
            state.send_keys(df['CIRCUIT_LOC_ADDR'][i].split(',')[2]) 
            checkbox = driver.find_element_by_xpath('/html/body/form/table[1]/tbody/tr[2]/td[2]/table/tbody/tr[8]/td[1]/input') 
            checkbox.click() 
            search_button = driver.find_element_by_xpath('/html/body/form/table[1]/tbody/tr[2]/td[2]/table/tbody/tr[8]/td[1]/input') 
            search_button.submit()

            try:
                address = driver.find_element_by_xpath('/html/body/form/table[2]/tbody/tr[1]/td[2]/b') 
                if (address):
                    radio_button = driver.find_element_by_xpath('/html/body/form/table[2]/tbody/tr[2]/td[1]/input') 
                    radio_button.click()
                    submit_button = driver.find_element_by_xpath('/html/body/form/table[3]/tbody/tr[2]/td/input')
                    submit_button.submit()
            except NoSuchElementException:
                print('no such element found')

            message_body = driver.find_element_by_xpath('//*[@id="msg"]/table/tbody/tr/td').text 
            message.append(message_body[14:]) 
            strx = message_body.split() 

            if any ("Tier"in s for s in strx):
                j = strx.index('Tier')
                tier.append(strx[j+1])
            else:
                tier.append("NULL")

            if any ("AT&T"in s for s in strx):
                j = strx.index('AT&T')
                wirecentre.append(strx[j+1])
            else:
                wirecentre.append("NULL")

            strx = df['STRIP_EC_CIRCUIT_ID'][i]
            filename = "C:\\Users\\chowdhuryr\\Desktop\\first automation\\{}.png".format(strx)
            driver.get_screenshot_as_file(filename)
            driver.close() 

        df['Tier'] = tier
        df['Wirecentre'] = wirecentre
        df['Message'] = message
        if os.path.exists(user_output):
            user_output="user_output{}.xlsx".format(filename)
            writer = pd.ExcelWriter(user_output)
            df.to_excel(writer, 'sheet1', index=False) 
            writer.save()
        else:
            print ("Output Directory does not exists.")

        popup_driver = webdriver.Chrome()
        popup_driver.maximize_window()
        popup_driver.execute_script(" window.alert('Process is Completed');")

root = tk.Tk()
b = GUI(root) 
root.mainloop()

渲染方法:

from tkinter import *
from selenium import webdriver 
from selenium.common.exceptions import NoSuchElementException

class GUI: 
    def __init__(self,master):

        self.ip_path_field = Entry(master)
        self.ip_path_field.grid(row=0,column=1,sticky=W)

        self.op_path_field = Entry(master)
        self.op_path_field.grid(row=2,column=1,sticky=W)

        self.filename =Entry(master)
        self.filename.grid(row=4,column=1,sticky=W)

        self.Submit = Button(master, text="Submit",
                         command=self.Scrapper(ip_path_field,op_path_field,filename) )
        self.Submit.grid(row=5,columnspan=2)

    def Scrapper(self,ip_path_field,op_path_field,filename):
        user_input = ip_path_field
        user_output = op_path_field
        filename = filename


root = Tk()
b = GUI(root) 
root.mainloop()

Restlet screen

它保持循环,但记录保存在数据库中

DB screen

我认为这与链式诺言有关,但是我找不到解决办法。

1 个答案:

答案 0 :(得分:0)

我是这样的,我返回了最后的承诺,并将print放入.then

 application.post('/outfit-choices', (req, resp, next) => {
          OutfitRequest.findById(req.body.outfitRequest)
            .then(outfitRequest => {
              const outfitChoice = new OutfitChoice(req.body);
              outfitChoice.save()
                .then(outfitChoice => {
                outfitRequest.outfitChoices.push(outfitChoice._id);
                return outfitRequest.save()
              })
            .then(this.render(resp, next))
            .catch(next);

            })
            .catch(next);
        });