猫鼬findOneAndUpdate更新错误的实体

时间:2019-02-19 08:42:18

标签: node.js mongodb mongoose

我使用猫鼬5.4.13,发现了一个奇怪的行为: 如果我使用

mymodel.findOneAndUpdate(
    {_id: '5c6ad3b1385ae7000e6c3c2c'}, //
    updateObject) 

它更新了错误的对象。出于某种原因,它更新了objectId而不是5c6ad3b1385ae7000e6c3c2c 5beac8adeff330000ecfd957

如果我将id转换为objectid,它将按预期工作。但是,例如findById无需转换即可工作。那是什么原因呢?

如文档中所述,猫鼬应该为我转换值。

编辑:

const schema: Schema = new Schema(
    {
        deviceToken: {
            type: String,
            required: true,
        },
        locale: {
            type: String,
            default: 'en',
            required: false,
        },
        userUid: {
            type: Schema.Types.String,
        },
        orders: [{
            type: Schema.Types.ObjectId,
            ref: 'Order'
        }],
        table: {
            type: Schema.Types.ObjectId,
            ref: 'Table',
            required: true,
        },
        venue: {
            type: Schema.Types.ObjectId,
            ref: 'Venue',
            required: true,
        },
    }, { timestamps: true }
);
export default model<MgSession>('Session', schema);
export const sessionSchema: Model<MgSession> = model<MgSession>('Session', schema);

0 个答案:

没有答案