node.js - MongoDB 未使用 graphql 在 Node js 中更新

标签 node.js mongodb graphql

我正在前端的 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/

相关文章:

javascript - Express + MongoDB - req.query 对象

node.js - 在 POST 请求中转发上传的文件 - Express

javascript - Mongodb 在模式级别生成默认随机数正在生成相同的数字

arrays - MongoDB 使用动态键搜索嵌套文档?

graphql - 如何使 Apollo Server 中的模式拼接更快?

javascript - Watson Conversation node.js 使用 learning_opt_out 创建工作区

node.js - 如何使用 Express 从 Node.js 登录到 ELK?

node.js - Heroku 连接 MONGODB 图集

elixir - 如何使用 Elixir 中的苦艾酒在查询中的嵌套项目上使用参数?

php - 如何在 GraphQL 中拥有数组类型的字段?