我无法访问_id
任何mongoose.model
对象。我知道有很多类似的答案,但是都没有解决我的问题。我正在使用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
in选项:
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
});
如果我通过猫鼬创建文档记录,它将创建_id
为ObjectId()
并且可以选择。
猫鼬期望有一个ObjectID _id
将自定义类型添加到架构
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。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句