这就是我的数据在数据库中的样子:
{
"id": 4,
"name": "New Sad",
"open": true,
"description": "The happiest place on earth!",
"gps": "133.232, 121.021",
"regionId": 1,
"location": "{\"regionName\":\"Bishop\",\"regionId\":1}",
"updatedAt": "2017-12-06T05:24:44.683Z",
"createdAt": "2017-12-06T05:24:44.683Z"
}
我hava jsonb
列,这是为了搜索原因,因为动态查询所有父表太慢,这就是我不使用factory.assoc 的原因。我不能使用assoc
并立即引用它创建的内容。
为了定义我的工厂女孩,我想我可以这样做:
module.exports = async factory => {
const region = await factory.create('region');
const area = factory.define('area', Area, () => {
return {
name: factory.chance('first'),
open: true,
description: factory.chance('sentence', {words: 5}),
gps: '122.123, 123.342',
regionId: factory.assoc('region', 'id'),
location: JSON.stringify({
regionName: region.dataValues.name,
regionId: region.dataValues.id,
}),
};
});
return area;
};
错误讯息:
(node:49078)UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝ID:2):错误:请求的工厂区域无效 (节点:49078)[DEP0018]弃用警告:不推荐使用未处理的拒绝承诺。将来,未处理的承诺拒绝将使用非零退出代码终止Node.js进程。
答案 0 :(得分:0)
不确定为什么它在我第一次尝试时不起作用,但现在它的工作原理如下:
const Area = require('../../src/models').Area;
module.exports = factory => {
const area = factory.define('area', Area, async () => {
const region = await factory.create('region');
return {
name: factory.chance('first'),
open: true,
description: factory.chance('sentence', {words: 5}),
gps: '122.123, 123.342',
regionId: region.dataValues.id,
location: JSON.stringify({
regionName: region.dataValues.name,
regionId: region.dataValues.id,
}),
};
});
return area;
};