【问题标题】:Modify objects returned by Mongoose修改 Mongoose 返回的对象
【发布时间】:2023-03-25 10:31:01
【问题描述】:

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

现在,我想将所有用户登录到控制台,但属性已更改。有点像:

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() 函数的异步类型,我不确定这是否可以完成。我来自 C# 和 PHP 背景,只使用关系数据库,这可以通过在 User 类中拥有一个只返回所需值的函数来轻松完成。

可以吗?!

【问题讨论】:

    标签: json node.js mongodb mongoose model


    【解决方案1】:

    您可以在用户架构上为此创建静态方法。在模式和模型创建之间定义静态方法很重要。另请注意,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))
    })
    

    【讨论】:

    • 你是我等了一整天的上帝。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    • 2019-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-07
    相关资源
    最近更新 更多