【发布时间】:2020-02-06 09:46:22
【问题描述】:
我正在前端的 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"
}
节点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}
我谷歌一无所获,我也没有发现任何错误来破解解决方案。 我被困了3天:( 谁能让我知道我哪里出错了?
【问题讨论】:
-
{ok:0,n:0,nModified :0 }它可以找到给定查询的匹配文档。所以检查{_id:ObjectId(settingId)}是否正确构建 -
@Subburaj 是的,它正在接收 id。如何检查结构是否正确?
-
你能不能
console.log(ObjectId(settingId))看看它的打印效果如何 -
@Subburaj 我会控制台那是 -> settingId,ObjectId(settingId) -> '5d96e98e7a921f0414619ad1' 5d96e98e7a921f0414619ad1 -> 我收到虽然收到它没有更新
-
确定 MongoDB 中有这个 id 数据吗?我的猜测是 ObjectId 正在制造问题