当前位置: 首页 > 知识库问答 >
问题:

修改Mongoose返回的对象

盛骏祥
2023-03-14

我一直在研究猫鼬文档,但我找不到一种方法来实现我想要做的事情。考虑一个MangGDB用户集合。还可以考虑一个包含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);
})

用户。图例():

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

给定的异步类型。find()函数我不确定这是否可以实现。我来自C#和PHP背景,只处理关系数据库,这可以通过在用户类中使用只返回所需值的函数轻松实现。

能做到吗?!

共有1个答案

秦鸿羽
2023-03-14

您可以在用户模式上为此创建静态方法。在模式和模型创建之间定义静态方法非常重要。还要注意fint返回的数组不是一个对象。

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))
})
 类似资料:
  • 问题内容: 如果一个方法填充/修改了一个对象,是否最好返回该对象或将返回类型保持为空,并且该方法将通过其引用来修改该对象? 我知道这是一个琐碎的问题,但是哪个是最优选的? 问题答案: 我取决于您的样式,但是返回的优点之一是:您可以调用,即可以链接方法调用。 例如,看看这是怎么做的,它允许这样的事情

  • 当我试图更改Mongoose查询返回的数据的任何部分时,它没有任何效果。 昨天我花了大约两个小时试图弄明白这一点,各种各样的s,使用临时存储变量等。最后,就在我觉得自己疯了的时候,我找到了一个解决方案。所以我想到了未来的某个人(Fyuuture!)可能存在保存问题。

  • 根据java.util.hashset.contains()的JavaDoc,该方法执行以下操作 但是,这似乎不适用于以下代码: 打印出来: 假

  • 我正在学习nodejs和mongodb,并获得平均应用程序 我的系统规格是 Ubuntu 16.04(64位) 节点v 6.1.0 npm v 3.8.6 "mongodb":"^2.1.18", "猫鼬":"^4.4.16"," 到目前为止,我已经创建了模式,并通过终端使用在mongob集合中添加了一个条目,并使用获得生成的文档_id。 db。位置。查找()。终端中的pretty()返回低于输出

  • 为了学习平均堆栈(使用Mongoose),我创建了一个StackOverflow类型的应用程序。我有存储在Mongo(v3.0.7)中的问题,它们有答案子文档。 我试图增加一个答案的投票数,但当问题返回时,它是空的。我非常肯定查询有问题,特别是我试图用需要修改的ID得到答案的地方。 查询0票有效: 更新:通过Mongo查询,返回结果: 但是,通过Mongoose返回NULL:

  • PostgreSQL提供了从DML语句返回数据的简洁方法,请参见https://www.PostgreSQL L.org/docs/current/DML-returning.html 我试图实现的是类似以下片段的东西 若要检索已删除的行,请执行以下操作。但是,这会导致以下异常 Spring Data JDBC声明修改查询只能返回void、int和boolean,请参见https://docs.S