📅  最后修改于: 2023-12-03 15:17:42.874000             🧑  作者: Mango
在使用 Mongoose 进行 MongoDB 操作的时候,有时候我们需要从查询结果中去除空对象。本文将介绍如何在 TypeScript 中使用 Mongoose 移除空对象。
首先,在 TypeScript 中创建 Mongoose 的 Schema。示例如下:
import { Schema } from 'mongoose';
const userSchema = new Schema({
name: { type: String },
age: { type: Number },
address: { type: Object },
});
假设我们有以下数据:
[
{
name: 'John',
age: 28,
address: {},
},
{
name: 'Jane',
age: 25,
address: {
city: 'New York',
country: 'USA',
},
},
{
name: 'Tom',
age: 30,
address: null,
},
{
name: 'Mary',
age: 27,
address: undefined,
},
]
在查询结果中,存在空对象 {}
、null
和 undefined
。我们需要将这些空对象从结果中去除,只留下有值的对象。
可以使用 Array.prototype.filter()
方法来过滤数组中的空对象。代码如下:
userModel.find({}, (err, users) => {
if (err) {
console.error(err);
return;
}
const filteredUsers = users.filter(user => {
return Object.keys(user.address).length !== 0;
});
console.log(filteredUsers);
});
Object.keys()
方法返回一个由对象的属性名组成的数组。如果这个数组的长度为 0,说明这个对象为空对象。
完整代码如下:
import { Schema, model } from 'mongoose';
interface User {
name: string;
age: number;
address: {
[key: string]: any;
};
}
const userSchema = new Schema<User>({
name: { type: String },
age: { type: Number },
address: { type: Object },
});
const userModel = model<User>('User', userSchema);
userModel.find({}, (err, users) => {
if (err) {
console.error(err);
return;
}
const filteredUsers = users.filter(user => {
return Object.keys(user.address).length !== 0;
});
console.log(filteredUsers);
});
本文介绍了如何在 TypeScript 中使用 Mongoose 移除空对象。通过使用 Array.prototype.filter()
方法和 Object.keys()
方法,可以过滤出数组中的空对象。