大家好,想询问下关于: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);
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.