Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过knex插入伪造数据_Javascript_Knex.js - Fatal编程技术网

Javascript 通过knex插入伪造数据

Javascript 通过knex插入伪造数据,javascript,knex.js,Javascript,Knex.js,我想通过knex插入数据,使用for look创建要插入数据的对象 我尝试了以下方法: const faker = require('faker'); const dataLength = 10 const obj = [] exports.seed = function (knex, Promise) { // Deletes ALL existing entries return knex('posts').del() .then(function () { /

我想通过knex插入数据,使用for look创建要插入数据的对象

我尝试了以下方法:

const faker = require('faker');
const dataLength = 10
const obj = []

exports.seed = function (knex, Promise) {
  // Deletes ALL existing entries
  return knex('posts').del()
    .then(function () {
      //create entries
      for (var index = 0; index < dataLength; index++) {
        obj[index] = {
          title: faker.lorem.sentence(),
          description: faker.lorem.paragraph(),
          createdAt: faker.date.recent(),
          updatedAt: faker.date.recent(),
          deletedAt: faker.date.recent(),
          deleted: faker.random.boolean(),
          tags: faker.random.arrayElement(["tag1", "tag2", "tag3", "tag4"])
        }
        knex('posts').insert([,
          obj[index]
        ]);
      }
      // Inserts seed entries
      return 
    });
};
const faker=require('faker');
常量数据长度=10
常量obj=[]
exports.seed=函数(knex、Promise){
//删除所有现有条目
返回knex('posts').del()
.然后(函数(){
//创建条目
对于(var索引=0;索引
我的问题是没有数据保存到数据库中


有什么建议说明我做错了什么吗?

您对
knex.insert()的调用将返回一个承诺。您需要在传递给
然后
方法的处理程序中返回此承诺,从而将其包含在中。通过在
then
处理程序中返回一个承诺,您实际上是在告诉它等待该承诺得到解决。因为您不返回任何内容(特别是,
undefined
),您的seed函数将删除帖子,但不需要知道它必须等待任何其他操作完成才能完成

将来,如果要返回多个承诺,可以使用
Promise.all()
返回所有承诺:

exports.seed = function (knex, Promise) {
  return knex('posts').del()
    .then(function () {
      return Promise.all([
        knex('bar').insert(),
        knex('foo').insert(),
      ])
    })
};
然后,您的承诺链将等待promise.all()中的所有承诺在继续之前得到解决

但是,在这种特殊情况下,无需多次调用
knex.insert()
,因为它可以接受对象数组而不是单个对象:

exports.seed = function (knex, Promise) {
  return knex('posts').del()
    .then(function () {
      const posts = []
      for (let index = 0; index < dataLength; index++) {
        posts.push({
          title: faker.lorem.sentence(),
          description: faker.lorem.paragraph(),
          createdAt: faker.date.recent(),
          updatedAt: faker.date.recent(),
          deletedAt: faker.date.recent(),
          deleted: faker.random.boolean(),
          tags: faker.random.arrayElement(["tag1", "tag2", "tag3", "tag4"])
        })
      }
      return knex('posts').insert(posts)
    });
};
exports.seed=函数(knex,Promise){
返回knex('posts').del()
.然后(函数(){
const posts=[]
for(让index=0;index