2017-12-06 16 views
0

를 만드는 내부에 공장 소녀 인스턴스를 만들 :이 내 데이터가 데이터베이스에있는 모습입니다 다른 공장 소녀에게 예를

{ 
    "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" 
} 

내가 jsonb 열을 HAVA,이 검색 이유 때문에 즉석에서 쿼리의 모든 부모 테이블 이 너무 느려서 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: Unhandled promise rejection (rejection id: 2): Error: Invalid factory 'region requested (node:49078) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

답변

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; 
};