json - 修改 Mongoose 返回的对象

标签 json node.js mongodb mongoose model

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

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

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 类中拥有一个仅返回所需值的函数来轻松完成。

可以吗?!

最佳答案

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

关于json - 修改 Mongoose 返回的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42912870/

相关文章:

php - laravel 在本地机器上返回 json 字符串,但在弹性 beantalk 实例上返回整数

json - 使用 XHR 请求将 Discord 嵌入发送到 Webhook

javascript - $result->fetch_all(MYSQLI_ASSOC) 不返回任何内容

javascript - 在嵌套的 then 和 promises ExpressJS/NodeJs 中返回错误

node.js - 如何迭代改变后端技术?

javascript - 为什么 mongoose 中间件 "pre"用 { query : true } is not called? 删除

mongodb - 如何将mongodb不同或聚合结果存储到文件中

javascript - 在 javascript url 中附加 PHP 变量

javascript - Node.js:如何序列化/反序列化 React 组件?

javascript - 用对象列表替换字符串列表 - mongoDB