nest在使用mongoose时,可以通过在Schema中设置_id属性的default值为false来实现新建时去掉_id是会报错的,能给另一种方法吗
时间: 2024-03-03 12:48:36 浏览: 28
对不起,我之前的回答有误。在 Nest.js 中使用 Mongoose 时,如果想要在新建文档时去掉 `_id` 属性,可以在模式(Schema)中使用 `toJSON()` 方法,将 `_id` 属性从序列化后的 JSON 中删除。具体实现方式如下:
```typescript
import { Schema, Prop, SchemaFactory } from '@nestjs/mongoose';
import { Document } from 'mongoose';
@Schema()
export class MyModel extends Document {
@Prop()
name: string;
toJSON() {
const { _id, ...rest } = this.toObject();
return rest;
}
}
export const MyModelSchema = SchemaFactory.createForClass(MyModel);
```
在上述示例中,我们在 `MyModel` 类中重写了 `toJSON()` 方法,在该方法中使用 `this.toObject()` 获取序列化后的 JSON,然后使用解构语法将 `_id` 属性删除,最后返回删除 `_id` 属性后的 JSON 对象。
这样,当使用 `MyModel.create()` 或 `new MyModel()` 创建新的文档时,返回的文档中就不会包含 `_id` 属性了。需要注意的是,这样设置后,就不能通过 `_id` 属性来查找文档了,需要使用其他属性或者自定义的 id 来查找。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)