2017-12-06 4 views
0

Dies ist, was meine Daten wie in der Datenbank sucht:Fabrik Mädchen Instanz erstellen innerhalb der Schaffung einer anderen Fabrik Mädchen Instanz

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

I jsonb Spalte hava, ist dies für die Suche Grund, weil Abfrage alle übergeordneten Tabellen on the fly ist zu langsam, weshalb ich nicht factory.assoc benutze. Ich kann assoc nicht verwenden und darauf verweisen, was es sofort erstellt.

Zu meiner Fabrik-Mädchen zu definieren, dachte ich, ich könnte dies nur tun:

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

Fehlermeldung:

(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.

Antwort

0

nicht sicher, warum es das erste Mal nicht funktioniert ich es versucht, , aber es funktioniert jetzt so:

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