修改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)) })