关于 mongoose 的 findOneAndUpdate 问题。

2019-05-19 23:11:48 +08:00
 Aidenboss

大家好,想询问下关于:findOneAndUpdate 的问题。 我这里使用了 mongoose。 我定义了一个 name 字段为唯一索引。导致每次我使用 findOneAndUpdate() 方法的时候,就算没有把 _id 赋值,该方法也会根据 name 查找到数据库已存在的文档。

代码如下,请各位老师帮忙看下,感谢!

import * as mongoose from 'mongoose';
import { Schema } from 'mongoose';

const tableName = 'test';

class StoreEntity {
    _id: Schema.Types.ObjectId;
    name: string;
}

const StoreSchema: Schema = new Schema({
    name: {
        type: String,
        required: true
    }
}, {
    autoCreate: true,
    versionKey: false
});

const StoreOperation = mongoose.model <StoreEntity> (tableName, StoreSchema, tableName);

insertOrUpdate(storeEntity: StoreEntity) {
    const storeEntity = {
        'name': 'test'
    };
    const query = { _id: storeEntity._id };

    const update = {
        name: storeEntity.name
    }
    const options = {
        upsert: true,
        new: true
    };

    StoreOperation.findOneAndUpdate(query,
        update,
        options,
        (e, writeResult) => {
            if (e) {
                console.error(`save: ${storeEntity} error`, e);
                rejected(e);
            } else {
                resolved(writeResult);
            }
        });
}

const storeEntity = new StoreEntity();
storeEntity.name = 'test';
insertOrUpdate(storeEntity);
11400 次点击
所在节点    MongoDB
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/565632

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX