环回4:创建播种器以在mySQL表中添加虚拟数据

问题描述 投票:1回答:2

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

我发现了几个帖子,但那些引用了loopback 3,如:

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

请指出我这样做的文档。

编辑:

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

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

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

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

找不到模块模型和存储库

虽然我输入了正确的路径。

loopbackjs v4l2loopback
2个回答
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');
});

0
投票

我们使用单独的库db-migrate来保持我们的迁移和种子脚本不在我们的环回代码库中。 Moreso,因为juggler的db.migrate和db.update方法也不像文档中提到的那样100%准确。 LB4 Database Migrations

© www.soinside.com 2019 - 2024. All rights reserved.