簡體   English   中英

貓鼬。 按文檔ID更新引發[TypeError:無法讀取未定義的屬性'_id']

[英]Mongoose. Update by document id throws [TypeError: Cannot read property '_id' of undefined]

有我的代碼:

    var fileModel = context.models.File,
                query = {
                    _id: context.models.ObjectId("532083358ab1654c0c8b4ced") // TODO: for debug, change after update fix
                },
                update = {
                    description: context.data.description,
                    userId: context.data.userId ?
                        context.models.ObjectId(context.data.userId) : undefined,
                    isAdded: true
                };
            fileModel.update(query, update, { multi: true }, function (err) {
                if (err) {
                    console.log('update');
                    console.log(err);
                    context.sendJson({ success: false, err: err });
                }
                else {
                    context.sendJson({ success: true });
                }
            });

有我的架構:

var fileSchema = new schema({
        path:  { type: String, required: true, validate: [validateName, 'a path is required'] },
        isApproved:  { type: Boolean, default: false },
        isAdded:  { type: Boolean, default: false },
        name:  { type: String, required: true, validate: [validateName, 'a name is required'] },
        description: { type: String },
        userId: { type: schema.Types.ObjectId },
        updated: { type: Date, default: Date.now },
        size: { type: Number }
    }, { autoIndex: false });

當我嘗試通過ID更新文檔時,我在控制台中看到以下消息:

update
[TypeError: Cannot read property '_id' of undefined]

我認為有問題

userId: context.data.userId ?
    context.models.ObjectId(context.data.userId) : undefined,

但我不知道如何解決。

我通過代碼的單獨部分解決了這個問題。 但是我不明白我的第一個解決方案出了什么問題。 那是工作代碼:

var fileModel = context.models.File,
        query = {
            _id: {
                $in: context.data.files.map(function (el) {
                    return context.models.ObjectId(el);
                })
            }
        },
        update = {
            description: context.data.description,
            isAdded: true
        };
    if (context.data.userId){
        update.userId = context.models.ObjectId(context.data.userId);
    }
    fileModel.update(query, update, { multi: true }, function (err) {
        if (err) {
            console.log('update');
            console.log(err);
            context.sendJson({ success: false, err: err });
        }
        else {
            context.sendJson({ success: true });
        }
    });

暫無
暫無

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

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