我一直在寻找创建数据播种器的选项,以便在我的Loopback 4应用程序中添加虚拟数据。但是,我在官方文档中找不到任何选择。
我发现了几则帖子,但那些都涉及回送3,例如:
请向我指出要这样做的文档。
编辑:
根据建议,我在脚本文件夹中创建了start.js文件:
require('babel-register')({
presets: ['es2015']
})
module.exports = require('./seed.js')
我已经复制了将脚本转换为seed.js文件中提到的JavaScript的脚本。运行脚本时,出现错误:
找不到模块模型和存储库
尽管我输入了正确的路径。
答案 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