如何解决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 });