node.js - 无法在 Mongoose 中创建自定义_Id

标签 node.js mongoose

我正在尝试使用以下代码更新数据,但它没有为我插入 _id, 我也使用过 upsert:true 但似乎也不起作用。

/* 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);

最佳答案

注意:您可以创建自定义 _id,但无法更新 _id,因为它是不可变字段

我认为您应该删除{_id : false} 这是我创建自定义_id

的工作代码

Mongoose 模型:

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);

插入数据

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);

        }
    });
});

输出: enter image description here

关于node.js - 无法在 Mongoose 中创建自定义_Id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49504901/

相关文章:

javascript - Node.js 中的全局上下文和 "this"

node.js - NodeJS - 访问外部进程时如何处理 "listen EADDRINUSE"

node.js - Mongoose populate() 返回没有错误的空数组

Javascript Promise 与 Mysql 链接

哈希库移动了,那么我应该如何更改我的旧代码

node.js - 限制数组字段的查询结果

node.js - 使用 Mongoose 自定义连接

node.js - 从v4.13.7升级到5.0.1后, Node 应用程序崩溃

node.js - 我需要将@hapi/joi 与 Mongoose 一起使用吗?

javascript - 回调函数示例