私のモデルは本質的に
- アイデアには多くのポジションがあります
- アイデアには 1 人のユーザーがいます
- ポジションには1つの方向があります
- ポジションには証券が 1 つあります
- ポジションには 1 つのアイデアがあります (アイデアには多くのポジションがあります)
そのようにプログラムするために、node-orm 関数の多くに「Q」プロミスを追加しました。find は qFind などになりました...
これをDB(MySql)に永続化する最良の方法を見つけるのに苦労しています:
User.qGet(1004).then(function(user) {
var newIdea = new Idea({
'openedOn': new Date()
})
newIdea.setUser(user, console.log)
Idea.qCreate(newIdea).then(function(idea) {
_.each(positions, function(position) {
Security.qFind({ticker: position.ticker}).then(function(securities){
var security = securities[0]
Direction.qFind({direction: position.direction}).then(function(directions){
var direction = directions[0]
var newPosition = Position({
'weight': 1
})
newPosition.setIdea(idea, console.log)
newPosition.setDirection(direction, console.log)
newPosition.setSecurity(security, console.log)
console.log(JSON.stringify(newPosition))
}) // Direction.qFind
}) // Security.qFind
}) // _.each
console.log(JSON.stringify(idea))
res.send(idea)
}) // Idea.qCreate
}) // User.find
ここに私の問題があります
- 機能していません。アイデアを設定すると、エラーが発生します。
[エラー: ER_BAD_NULL_ERROR: 列 'directionId' を null にすることはできません]
問題は、このオブジェクトに 3 つの外部キーを設定する必要があることです... 2. これは、ネストされたオブジェクトを保存するための正しいアプローチですか?