Reputation: 19
I'm trying to updating data with below code but it's not inserting _id for me, Also I've used upsert:trure but seems like it's not working too.
/* UPDATE LiveFeed socket */
router.put('/', function(req, res, next) {
filter=req.params.exchange+req.params.symbol;
LiveFeed.where({filter}).update({
_id: filter,
exchange: req.params.exchange,
symbol: req.params.symbol,
timestamp: req.params.timestamp,
ltp: req.params.ltp,
close: req.params.close,
open: req.params.open,
high: req.params.high,
low: req.params.low,
vtt: req.params.vtt,
atp: req.params.atp,
oi: req.params.oi,
spot_price: req.params.spot_price,
total_buy_qty: req.params.total_buy_qty,
total_sell_qty: req.params.total_sell_qty,
lower_circuit: req.params.lower_circuit,
upper_circuit: req.params.upper_circuit,
yearly_low: req.params.yearly_low,
yearly_high: req.params.yearly_high,
bids: req.params.bids,
asks: req.params.asks,
ltt: req.params.ltt
},
{
upsert: true,
multi: true,
new: true
}).exec();
});
//model
var mongoose = require('mongoose');
var LiveFeed = new mongoose.Schema({
_id: String,
timestamp: String,
exchange: String,
symbol: String,
ltp: Number,
close: String,
open: String,
high: String,
low: String,
vtt: Number,
atp: Number,
oi: Number,
spot_price: Number,
total_buy_qty: String,
total_sell_qty: String,
lower_circuit: Number,
upper_circuit: Number,
yearly_low:Number,
yearly_high: Number,
bids: String,
asks: String,
ltt: String,
updated_date: {
type: Date,
default: Date.now
},
},
{
_id: false
});
module.exports = mongoose.model('LiveFeed', LiveFeed);
Upvotes: 1
Views: 6278
Reputation: 1013
Note : You can create custom _id but you can not update _id since it is an Immutable field
I think you should remove {_id : false} Here is my working code for creating custom _id
Mongoose Model :
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var msgboardSchema = new Schema({
_id : { type : Number, required : true },
date: {
type: Date,
default: Date.now,
},
msg: String
});
module.exports = mongoose.model('msgboard', msgboardSchema);
To insert data
router.post('/Create', function(req, res) {
var msg_board = new msgboard();
msg_board.date = new Date();
msg_board.msg = req.body.msg;
msg_board._id = req.body._id;
msg_board.save(function(msg_err, msg_test){
if(msg_err){
console.log(msg_err);
res.json(msg_err);
}else{
console.log("msgboard data created");
res.json(msg_test);
}
});
});
Upvotes: 3