如何解决mongodb中不可变字段的更新问题

如何解决mongodb中不可变字段的更新问题,mongodb,mongoose,graphql,Mongodb,Mongoose,Graphql,我正在写一个变种来更新数据库中的一个集合 updateDiscoverUsers(_id:ID!,input: UpdateDiscoverUsersInput!): DiscoverUsers 下面的解析器函数就是处理该变异的函数 updateDiscoverUsers: async (args) => { const auth = new DiscoverUsers({ geohash: args.input.geohash, offenses

我正在写一个变种来更新数据库中的一个集合

updateDiscoverUsers(_id:ID!,input: UpdateDiscoverUsersInput!): DiscoverUsers
下面的解析器函数就是处理该变异的函数

updateDiscoverUsers: async (args) => {
    const auth = new DiscoverUsers({
        geohash: args.input.geohash,
        offenses: args.input.offenses,
        online: args.input.online,
        paid: args.input.paid,
        profilePic: args.input.profilePic,
        username: args.input.username,
        creator: "5dab348c8890af1b8c25b22e"
    })

    const value = await DiscoverUsers.findByIdAndUpdate(args._id, { $set: auth }, { useFindAndModify: false, new: true }) 
    if (!value) {
        throw new Error('User doesnt exist')
    }
    return transformUser(value)
}
下面是要返回的值的类型

    type DiscoverUsers{
    _id:ID!
    geohash: String!
    offenses:Int
    online: Int
    paid: Boolean
    profilePic: String
    username: String
    creator: Auth!
}
下面还有一个输入类型,它保存用于更新集合中任何字段的值

    input UpdateDiscoverUsersInput{
    geohash: String
    offenses:Int
    online: Int
    paid: Boolean
    profilePic: String
    username: String
}
但是当我尝试运行graphiql中的突变时,如下所示

 mutation {
  updateDiscoverUsers(_id:"5dab7c198a83f235c89a964a",input: {geohash:"dudknudnud", username: "Wacha"}){
    username
  }
}
我得到一个显示在graphiql中的错误

{ “错误”:[ { “消息”:“在路径“\u id”上执行更新将修改不可变字段“\u id”, “地点”:[ { "线":2,, “专栏”:3 } ], “路径”:[ “UpdateDiscoveryUsers” ] } ], “数据”:{ “UpdateDiscoveryUsers”:空 } }


我试着检查问题似乎在哪里,在线检查,没有类似的问题。欢迎提供任何帮助并提前感谢您

仍然会遇到同样的问题您可以在发送给我display valuewhen I console.log(“Update”,Update)后使用console.log值吗?我收到Update{u id:5dab3573c4d64e254c4eff1}但它没有日志值我猜查询没有完成请编写该行console.log(value);请告诉我得到了什么?是的,这是正确的,在所有CRUD操作中,更新仍然存在问题
Please use following code

      const auth = {
      geohash: args.input.geohash,
      offenses: args.input.offenses,
      online: args.input.online,
      paid: args.input.paid,
      profilePic: args.input.profilePic,
      username: args.input.username,
      creator: "5dab348c8890af1b8c25b22e"
    };
    const updateCond={_id:mongoose.Types.ObjectId(args._id)}
    const value = await DiscoverUsers.findOneAndUpdate(updateCond, auth, { new: true });