回送4:创建播种器以在MySQL表中添加伪数据

时间:2019-02-20 10:45:49

标签: loopbackjs v4l2loopback

我一直在寻找创建数据播种器的选项,以便在我的Loopback 4应用程序中添加虚拟数据。但是,我在官方文档中找不到任何选择。

我发现了几则帖子,但那些都涉及回送3,例如:

  1. Loopback: Creating a Seed Script
  2. loopback-seed

请向我指出要这样做的文档。

编辑:

根据建议,我在脚本文件夹中创建了start.js文件:

require('babel-register')({
    presets: ['es2015']
})

module.exports = require('./seed.js')

我已经复制了将脚本转换为seed.js文件中提到的JavaScript的脚本。运行脚本时,出现错误:

  

找不到模块模型和存储库

尽管我输入了正确的路径。

2 个答案:

答案 0 :(得分:0)

实际上,我是直接用Loopback这样做的(这是打字稿):

import * as users from './users.json';

import * as Promise from 'bluebird';
import {Entity, DefaultCrudRepository} from '@loopback/repository';

import {MyApplication} from '../src/application';
import {User} from '../src/models';
import {UserRepository} from '../src/repositories';

const app = new MyApplication();

async function loadByModel<T extends Entity, ID>(items: T[], repository$: DefaultCrudRepository<T,ID>, type:  { new(it: Partial<T>): T ;}){
    console.log(type.toString());
    let repository = await repository$;
    await repository.deleteAll();
    await Promise.map(items, async (item: T) => {
        try{
            return await repository.create((new type(item)));
        } catch(e){
            console.log(item);
        }
    }, {concurrency: 50});
}

async function load(){
    await loadByModel(users, await app.getRepository(UserRepository), User);
}


app.boot().then(async () => {
    await load();
    console.log('done');
});

答案 1 :(得分:0)

我们使用了一个单独的库db-migrate,以将迁移脚本和种子脚本排除在回送代码库之外。此外,因为杂耍者的db.migrate和db.update方法也不如文档中所述100%准确。 LB4 Database Migrations