Mam następujący schemat skonfigurować:Mongoose: nie można zapisać zagnieżdżonego obiektu do zagnieżdżonego modelu
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]
});
Schemat Trade faktycznie nie muszą mieć „handlową” własność zagnieżdżone tak, ale ja dostaję to od anAPI i na razie chcę zachować to dokładnie tak, jak to mam.
Problem jest, gdy biorę surowego obiektu JS:
{
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'
}
}
... i zapisać go ...
market.trades.push(trade);
market.save(function(err){
if (err) console.log('Error saving trade to market.');
});
... Wydaje się rozebrać się z ' klucz handlu”, a to wszystko, co zostanie zapisane w db:
{ channel: 'trade.5', _id: 54f9e3056e23df1ee3e60327 }
jestem brakuje etapie walidacji problemu masowego przypisania, etc?
EDIT: Jeżeli ustawić TradeSchema po prostu mieć typ obiektu, zapisuje w porządku:
var TradeSchema = new mongoose.Schema({
channel: String,
trade: Object
});
Nie wiem, co bym stracić, ponieważ jestem nowy w Mongo/Mangusta, ale wydaje się, że istnieje prawdopodobnie wadą.
To się udało! Dziękuję Ci. – crypticsymbols
Możesz także użyć go w ten sposób, jeśli masz już model z jakimś zmienionym i zagnieżdżonym obiektem: 'market.trades.push (trade); market.markModified ("transakcje"); market.save(); 'To działa dla mnie jak urok! Ty. – SkyDancer