[英]Unable to get _id which is not ObjectID with mongoose
我無法訪問任何mongoose.model
對象的_id
。 我知道有很多類似的答案,但沒有一個能解決我的問題。 我正在使用mongoose
和TypeScript
。
我有現有的集合,其中包含具有現有Mixed
_id
數據:
{
_id: 10,
name: "someString",
email: "someString",
}
...
我有架構和界面:
const UserModel: Schema = new Schema({
name: { type: String, required: true },
email: { type: String, required: true, unique: true },
});
export interface IUser extends Document {
name: string;
email: string;
}
export default mongoose.model<IUser>('User', UserModel);
我嘗試選擇一些用戶:
UserModel.findOne({email:data.email}).then((user)=>{
console.log(user);
// I get everything without _id
// { name: "someString", email: "someString" }
console.log(user.id);
// null
});
我還嘗試在選項中將_id
設置為false
:
const UserModel: Schema = new Schema({
name: { type: String, required: true },
email: { type: String, required: true, unique: true },
}, { _id: false });
我嘗試選擇一些用戶:
UserModel.findOne({email:data.email}).then((user)=>{
console.log(user);
// I get everything with _id
// { _id: 10, name: "someString", email: "someString" }
console.log(user.id, user._id);
// but it is not accessible
// null, undefined
});
如果我通過 mongoose 創建文檔記錄,它會創建_id
作為ObjectId()
並且它是可選的。
Mongoose 需要_id
的 ObjectID
將您的自定義類型添加到架構
const UserModel: Schema = new Schema({
_id: { type: mongoose.Schema.Types.Mixed, required: true },
name: { type: String, required: true },
email: { type: String, required: true, unique: true },
});
_id
索引無法修改,所以不用擔心添加索引選項。
通常最好讓 Mongo 使用它的 ObjectID。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.