修改Mongoose返回的对象

我一直在研究Mongoose文档,我找不到一种方法来实现我想要做的事情。 考虑一个MongoDB用户集合。 还要考虑一个Mongoose UserSchema,它具有在DB集合中find的所有字段。

现在,我想login到控制台,所有用户,但具有更改的属性。 有点像做:

Users = mongoose.UserSchema; ApiUserSchema; Users.find(function(err,users){ //for each user that mongoose finds, //I want to convert from UserSchema to "ApiUserSchema" //Something like the following: newUsers = users.ToApiUserSchema(); console.log(newUsers); }) 

users.ToApiUserSchema():

 function toApiUserSchema(user){ username = user.username; email = user.email; someAggregate = user.Username + user.Email; .......and so on.....; } 

鉴于.find()函数的asynchronoustypes,我不知道这是否可以完成。 我来自C#和PHP的背景,只能用于关系型数据库,这可以通过在User类中有一个函数来轻松完成,它只返回想要的值。

可以这样做吗?

您可以在用户架构上为此创build静态方法。 在模式和模型创build之间定义静态方法非常重要。 另请注意, find返回数组不是一个对象。

 var userSchema = new mongoose.Schema({ username: String, email: String, password: Number }) userSchema.statics.toApiUserSchema = function(data) { return data.map(function(user) { return { email: user.email, username: user.username, emailAndUsername: user.email + user.username } }) } var User = mongoose.model('User', userSchema) User.find({}, function(err, users) { console.log(User.toApiUserSchema(users)) })