2017-12-03 9 views
2

私は次のように私はモデル化してることを、多対数の関係で、2つのモデルがあります:feathersjsと多少のmongodbの関係で作業するには?

// Portfolio 
const portfoliosSchema = new Schema({ 
    name: { type: String, required: true }, 
    description: { type: String }, 
    user: { type: Schema.Types.ObjectId, ref: 'User', required: true }, 
    positions: [{ 
    stock: { type: Schema.Types.ObjectId, ref: 'Stock', required: true }, 
    cost: number, 
    amount: number, 
    }] 
}); 

// Stock 
const stocksSchema = new Schema({ 
    exchange: { type: String, required: true }, 
    symbol: { type: String, required: true }, 
    company: { type: String }, 
    description: { type: String } 
}); 

を羽で/やさしい方法をカスタムサービスを書くことがなければ、どのように私は希望:

  1. 照会ポートフォリオと(レコード全体を更新せずにIE)のポートフォリオのスキーマ内のネストされた位置に/更新を挿入株式 コレクション
  2. の簡素化から関連レコードを移入

これはサポートされていますか?カスタムサービスを作成するか、または関係を正規化する必要がありますか?

編集 - 解決#1フックの前に使用して余分なデータを取得する最初の問題:

function(hook) { 
    const query = hook.params.query; 
    hook.params.query = Object.assign({},query,{ 
    $populate: { 
     path: 'positions.stock', 
     select: 'exchange symbol' 
    } 
    }); 
} 
+0

はい、どちらもサポートされています。サンプルコードを探していますあなたのために。 – Alan

答えて

0

移入コードのサンプル、あなたのニーズに合わせて調整:

Portfolio.find({ some: 'params' }) 
.populate({ path: 'stock', select: 'name -_id' }) 
.exec((err, portfolios) => { 
    res.json({ portfolio: portfolios }); 
}); 

は、ネストされた更新配列アイテム:

Position.update({ 'position._id': 'h43q9h94945d948jh098j6h0' }, { 
    '$set': { 'position.$.whatever': 'your-updated-stuff' } 
}, err => { 
    if (err) return console.log(err)); 
    res.json({ success: true }); 
}); 
+0

こんにちはアラン、私が間違っている場合は私を修正しますが、これはどのようにこれらのクエリを作成するためのmongooseのコードです。これをfeathersjsでどうやって使うのですか?これらのクエリでカスタムサービスを作成する必要がありますか? – cnorris

関連する問題