Ho il seguente schema impostato:Mongoose: Impossibile salvare oggetto nidificato al modello nidificato
var TradeSchema = new mongoose.Schema({
channel: String,
trade: {
tradeid: Number,
timestamp: Date,
datetime: Date,
marketid: Number,
marketname: String,
quantity: Number,
price: Number,
total: Number,
type: String
}
});
var MarketSchema = new mongoose.Schema({
name: { type: String, index: true },
trades: [TradeSchema]
});
Lo schema commerciale in realtà non bisogno di avere la proprietà "mestiere" annidato in quel modo, ma io sto ricevendo da anAPI e per ora voglio mantenere quello esattamente come l'ho avuto.
Il problema è, quando prendo l'oggetto JS grezzo:
{
channel: 'trade.5',
trade: {
tradeid: '86554823',
timestamp: 1425569593,
datetime: '2015-03-05 10:33:13 EDT',
marketid: '5',
marketname: 'FTC/BTC',
quantity: '957.65001732',
price: '0.00001210',
total: '0.01158757',
type: 'Sell'
}
}
... li risparmio che ...
market.trades.push(trade);
market.save(function(err){
if (err) console.log('Error saving trade to market.');
});
... sembra mettere a nudo il ' chiave del commercio', e questo è tutto ciò che viene salvato al db:
{ channel: 'trade.5', _id: 54f9e3056e23df1ee3e60327 }
mi manca una fase di convalida, problema della massa-assegnazione, ecc?
EDIT: Se io impostare la TradeSchema di avere solo un tipo di oggetto, si salva bene:
var TradeSchema = new mongoose.Schema({
channel: String,
trade: Object
});
Non so cosa avrei perso dal momento che sono nuovi per il Mongo/Mongoose, ma sembra che ci sia probabilmente un aspetto negativo.
L'ha fatto! Grazie. – crypticsymbols
Puoi anche usarlo in questo modo, se hai già un modello con qualche oggetto modificato e annidato: 'market.trades.push (trade); market.markModified ('mestieri'); market.save(); 'Ha funzionato per me come un fascino! Ty. – SkyDancer