我正在前端的 graphql 中进行更新突变
mutation updateSetting($updateSetting:CoSettingInput,$id:String) {
updateConSettings(input:$updateSetting,settingId:$id){
_id
Local
Token
Credentials
Port
Host
Auth
}
}
从前端传递给graphql的变量
{
"updateSetting": {
"Local " :"asdasdkk"
"Token":"asdasdkk"
"Credentials":"asdasdkk"
"Port":"asdasdkk"
"Host":"asdasdkk"
"Auth" :"asdasdkk"
},
"id": "5d96e98e7a921f0414619ad1"
}
Node js 中的后端 MongoDB 查询
input CoSettingInput{
Local
Token
Credentials
Port
Host
Auth
}
updateConSettings(input:ConSettingInput,settingId:String):ConSettings
async updateConSettings(root,{
input,
settingId
}){
console.log(input,settingId)
const updateSetting=await ConSchema.updateOne(
{_id:ObjectId(settingId)},
{CoSettingInput:input}
).exec();
console.log("ErrorupdateSetting",updateSetting)
if(!updateSetting){
throw new Error("Error- Cannot update the setting")
}
return updateSetting
}
我已在后端控制台并接收数据,但它没有更新。
{ok:0,n:0,nModified:0}
我在谷歌上什么也没找到,也没有发现任何错误来破解解决方案。 我被困了三天:( 谁能告诉我我哪里出错了?
最佳答案
您在查询尝试中错过了 $set
ConSchemas.updateOne(
{_id:ObjectId(settingId)},
{$set:{CoSettingInput:input}})
但是$set
适用于您可以使用的整个文档更新的单个 key
ConSchemas.replaceOne(
{_id:ObjectId(settingId)},
{CoSettingInput:input})
但是在replaceOne中,您将丢失所有以前的 key ,只会更新新的 key 。
关于node.js - MongoDB 未使用 graphql 在 Node js 中更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58297642/