猫鼬无法获取不是ObjectID的_id

杰克斯

我无法访问_id任何mongoose.model对象。我知道有很多类似的答案,但是都没有解决我的问题。我正在使用mongooseTypeScript

我已经收集了包含现有数据的集合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
});

另一尝试

我也尝试设置_idfalsein选项:

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
});

注意

如果我通过猫鼬创建文档记录,它将创建_idObjectId()并且可以选择。

马特

猫鼬期望有一个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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章