簡體   English   中英

將自定義對象的Mongoose PUT實施為復雜模式的問題

[英]Issue implementing a Mongoose PUT for a custom object into a complex schema

我將對問題進行分解,以確保我已經解釋清楚。

我的Web應用程序正在使用MEAN.js,在這種情況下,我正在Mongoose服務器端控制器中實現更新功能。 使用此架構:

客戶端角度控制器代碼工作正常,並且向我發送了正確的對象以將其插入mongodb

我有一個自定義對象的數組,該對象包含數據庫中其他相關的架構對象,它表示引用任務對象的更新列表,Taskstate對象的更改以及發生更新的時間。

 tupdates:[{
        task:{
          type: Schema.ObjectId,
          ref: 'Task'
        },
        tstate:{
          type: Schema.ObjectId,
            ref: 'Tstate'
        },
        startedat: Date,
        stoppedat: Date,
        updatedby:{
            type: Schema.ObjectId,
            ref: 'User'
        },
    }]

我實現了一個函數,該函數將遍歷req對象中的數組,並為數組中的每個更新創建自定義對象,最后將其插入數據庫中。 服務器端貓鼬控制器

var mongoose = require('mongoose'),
Job = mongoose.model('Job');
    exports.update = function(req, res){
    var job = req.job;

    //check for updates
    if(req.body.tupdates.length>0){
    for (var j=0; j<req.body.tupdates.length; j++){

        var theobj = req.body.tupdates[j];
        var tupdate = ({
           task : theobj.task._id,
            tstate: theobj.tstate._id
        });
job.tupdates.push(tupdate);
        }
    }
    job.save(function(err){
        if(err){
            return res.status(400).send({
                message: getErrorMessage(err)
            });
        }else{
            res.json(job);
        }
    });
};enter code here

數據保留在數據庫中,問題是為req數組中的每個更新插入了一個我沒有參考的具有ObjectID的附加_id值,如下所示:

db.jobs.find()
{ "_id" : ObjectId("56eff14d4b343c7f0a71f33c"), "creator" : ObjectId("55ddd115a2904424680263a0"), "title" : "Job1", "tupdates" : [ { "task" : ObjectId("567a9c4b90f3ccd10b0e7099"), "tstate" : ObjectId("5693bb0f804936f167fe9ec2"), *"_id" : ObjectId("56eff38e095a2fa41312d876")*} ]}

我添加了這些星號以指示_id值和ObjectId引用,該引用已添加到在服務器端控制器中創建的對象中,每次我對同一對象進行更新時,問題仍然存在。 它會在以后產生500個錯誤,必須省略才能使該功能在生產中正常工作,我感謝您的幫助,認為這是我需要進行的Java腳本調整。

默認情況下,如果它們是對象,貓鼬會將_id字段添加到數組元素。 只需在您的架構中添加_id: false即可:

    tupdates:[{
        _id: false,
        task:{
          type: Schema.ObjectId,
          ref: 'Task'
        },
        tstate:{
          type: Schema.ObjectId,
            ref: 'Tstate'
        },
        startedat: Date,
        stoppedat: Date,
        updatedby:{
            type: Schema.ObjectId,
            ref: 'User'
        },
    }]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM