【问题标题】:How to seed a table with a foreign key using faker.js如何使用 faker.js 为带有外键的表播种
【发布时间】:2020-01-27 18:59:01
【问题描述】:

我正在尝试使用带有 knex 的 faker.js 为包含外键的表播种。有问题的两个表是“帐户”和“用户”。 user 表包含 accountid 字段作为外键。现在,我可以毫无问题地为“帐户”表播种:

const faker = require('faker');

function fakeAccount() {
  var account = {
    accountid: faker.random.number(),
    createdat: faker.date.recent(),
    updatedat: faker.date.recent()
  }
   return account;        
}

exports.seed = function(knex) {
  // Deletes ALL existing entries
  return knex('accounts').del()
    .then(function () {
      for (let i = 1; i< 10; i++) {
          fakeAccounts.push(fakeAccount());
      }

      // Inserts seed entries
      return knex('accounts').insert(fakeAccounts);
    });
};

当我尝试播种“用户”时。我请求从帐户中获取所有行以进行迭代并为每个帐户 ID 创建四个用户,这就是代码。它不是最漂亮的代码,但它应该可以工作。问题是我的承诺正在返回待处理。从“帐户”获取所有记录的功能运行良好:

const faker = require('faker');
const db = require('../../accounts/accountdb.js');

async function returnsQueryBuilder() {
  return await db.find();
}


function userbatchfunc() {
  var userbatch = [];
  var fakerarray = [];
  var userarray = [];
  var queryArray = returnsQueryBuilder();
  console.log(queryArray)

  for (let i = 1; i < queryArray.length; i++) {
    for (let j = 1; j < 4; j++) {
    userbatch = {
        accountid : queryArray[j]['accountid'],
        image : faker.image.avatar(),
        firstName : faker.name.firstName(),
        lastName : faker.name.lastName(),
        email : faker.internet.email(),
        passwordhash : faker.random.number(),
        password: "password1234",
        telephone : faker.phone.phoneNumber(),
        telephone_ext : "",
        registrationDate : faker.date.recent(),
        inactive : "true",
        allowogin : "true" 
      }
      fakerarray = fakerarray.push(userbatch);
    }
    userarray = userarray.push(fakerarray);  
  }  
  return userarray;
}



exports.seed = function(knex) {
  // Deletes ALL existing entries
  return knex('users').del()
    .then(function () { 
       return knex('users').insert(userbatchfunc());
    });
};  

我得到我的帐户种子

承诺{待处理}

。如果您想查看 find() 函数:

const db = require('../database/db_config.js');

module.exports = {
    find
}

function find() {
    return db('accounts');
}

谁能告诉我为什么我的承诺没有得到解决?

【问题讨论】:

    标签: javascript knex.js faker


    【解决方案1】:

    您需要var queryArray = await returnsQueryBuilder(); 才能获得已解决的承诺的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-29
      • 2021-08-22
      • 2020-08-04
      • 1970-01-01
      • 2021-10-31
      • 2020-10-20
      • 2018-04-22
      • 1970-01-01
      相关资源
      最近更新 更多