退出当前线程并移至下一个

uneeb meer

我有两个要顺序运行的命令,第一个是数据库种子,第二个是实际的服务器启动,但是由于某种原因,nodejs不运行第二个命令,所以让我向您展示脚本

package.json

 "scripts": {
    "start": "ts-node src/seeder/seedCompanies  && ts-node-dev --respawn src/index.ts"
  }

第一个命令是种子,其代码是

seedCompanies.ts

import { Company } from "../entity/Company";
import { Product } from "../entity/Product";
import { ProductColor } from "../entity/ProductColor";
import { ProductSize } from "../entity/ProductSize";

import { createConnection } from "typeorm";
import bcrypt from "bcryptjs";

createConnection().then((connection): Promise<void> => {

  for (let i = 0; i <= 1; i++) {

    let company = new Company();
    company.name = `Company ${Math.random().toString(36).substring(4)}`,
      company.email = `email${Math.random().toString(36).substring(4)}@gmail.com`,
      company.address = "Demo Address",
      company.password = bcrypt.hashSync('123', 10),
      company.website = "website.com"

    connection.manager
      .save(company)
      .then(company => {


        for (let j = 0; j < 10; j++) {
          let product = new Product();
          //randon name for product as seeder will run on every server start
          product.name = `Product ${Math.random().toString(36).substring(5)}`;
          product.description = "Seed product";
          product.image = "https://picsum.photos/200/300";
          product.company = <any>company.id;
          connection.manager
            .save(product).then(product => {
              let productColor = new ProductColor();
              productColor.color = "#000";
              productColor.product = <any>product.id


              connection.manager
                .save(productColor)

              let productSize = new ProductSize();
              productSize.size = "XL";
              productSize.product = <any>product.id

              connection.manager
                .save(productSize)
            })

        }
      });
  }
  return <any>null;
})

现在播种效果很好,我可以看到添加的数据,但是问题是nodejs卡在了该脚本的末尾,没有显示任何错误

query: SELECT `ProductSize`.`id` AS `ProductSize_id`, `ProductSize`.`size` AS `ProductSize_size` FROM `product_size` `ProductSize` WHERE `ProductSize`.`id` = ? -- PARAMETERS: [60]
query: COMMIT
query: COMMIT
query: COMMIT

这些是我尝试使用的终端中的最后几行

process.exit(1)

但这关闭了服务器,我如何才能移至package.json中的下一个线程/命令?

彼得·瓦格纳

NPM脚本显示:

...: "ts-node src/seeder/seedCompanies  && ts-node-dev --respawn ..."

&&有表示“下一个命令只运行,如果前面的命令退出成功”要在Node进程中执行此操作,请process.exit使用0not进行调用1有关退出代码的一些详细信息,请参见此处

您需要在seedCompanies脚本中指定播种成功或失败的时间。就像是:

createConnection()
.then((connection): Promise<any> => {
  // Use the connection, waiting for it to finish
  // See below for comments!
}).then(() => {
  // Seeding successful
  return process.exit(0);
})
.catch((err): Promise<any> => {
    // Seeding Failed
    return process.exit(1);
});

请注意,在示例代码中,您没有等待for ...循环内的promise链完成。您需要适当地执行此操作,以确保退出之前数据已完成播种。如果您需要那里的帮助,可能是另一个问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

移至下一个专栏

来自分类Dev

如何查看当前日期并移至下一个日期

来自分类Dev

DateTime移至下一个预定义日期

来自分类Dev

vim:移至下一个标签

来自分类Dev

QML:移至表格中的下一个控件

来自分类Dev

移至下一个项目版本

来自分类Dev

Emacs移至下一个空白

来自分类Dev

移至下一个项目版本

来自分类Dev

验证后移至下一个View Controller

来自分类Dev

删除viewcontroller并移至下一个view controller

来自分类Dev

QTP / UFT:移至下一个测试

来自分类Dev

检查重复项并移至下一个元素

来自分类Dev

移至Mutt中的下一个标记消息

来自分类Dev

单击按钮移至下一个活动

来自分类Dev

显示警报并移至下一个活动

来自分类Dev

停止当前线程然后创建一个执行相同操作的新线程?

来自分类Dev

如何让当前线程在继续之前等待另一个线程完成?

来自分类Dev

从当前R减去下一个值

来自分类Dev

XSLT:基于当前返回下一个节点

来自分类Dev

从当前R减去下一个值

来自分类Dev

jQuery隐藏当前div并显示下一个

来自分类Dev

awk比较当前和下一个

来自分类Dev

XSLT:基于当前返回下一个节点

来自分类Dev

如何选择当前元素的下一个元素

来自分类Dev

如何移至数组的上一个/下一个索引键

来自分类Dev

移至另一个文档中的下一个单元格

来自分类Dev

Textwrangler:移至下一个或上一个字

来自分类Dev

移至另一个文档中的下一个单元格

来自分类Dev

QThread总是留下一个线程