Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mongoose/MongoDB\u id作为字符串_Mongodb_Vue.js_Mongoose_Graphql Js - Fatal编程技术网

mongoose/MongoDB\u id作为字符串

mongoose/MongoDB\u id作为字符串,mongodb,vue.js,mongoose,graphql-js,Mongodb,Vue.js,Mongoose,Graphql Js,我在从MongoDB获取数据时遇到了一个问题。我得到了 ID不能表示值:{u bsontype:“ObjectID”,…} 有人说, 将每个模型的_id声明为字符串类型 这样就行了,问题已经解决了,但这样做可以吗?我的意思是,MongoDB不会为了好玩而将ID另存为ObjectID。还是同样的,用字符串代替objectid?好的,我找到了如何使用ID的解决方案。 在mongoose创建ID时,ID应该是ObjectID。所以我使用GraphQL,我没有注意到GraphQL自动将_id(Objec

我在从MongoDB获取数据时遇到了一个问题。我得到了
ID不能表示值:{u bsontype:“ObjectID”,…}

有人说,

将每个模型的_id声明为字符串类型


这样就行了,问题已经解决了,但这样做可以吗?我的意思是,MongoDB不会为了好玩而将ID另存为ObjectID。还是同样的,用字符串代替objectid?

好的,我找到了如何使用ID的解决方案。 在mongoose创建ID时,ID应该是ObjectID。所以我使用GraphQL,我没有注意到GraphQL自动将_id(ObjectID)解析为id(String)

例如:

在typeDefs.gql中,不要写入_id:id!,而是写id:id

type Post {
  id: ID!
  title: String!
}

然后我们把id作为一个简单的字符串,问题就解决了。

不确定您在哪里声明这个,但mongoose通常会处理从字符串到ObjectId的转换,所以是的,我认为您很好:)例如:const userSchema=new mongoose.Schema({u id:string,username:{type:String,required:true,unique:true}--谢谢您的回答!:)您不需要在模式中声明您的_id。这是由mongoose自动处理的。我猜您的问题出在其他方面,但需要更多的代码来说明一些有用的东西。或者您可以在我刚刚编写的用于graphql的resolver.js中通过
\u id.toString()
将ObjectId转换为字符串,{Post})=>{const Post=wait Post.find({});return posts}获取所有帖子。