通过node.js从mongodb获取数据

Posted

技术标签:

【中文标题】通过node.js从mongodb获取数据【英文标题】:get data from mongodb through node.js 【发布时间】:2021-06-02 23:34:06 【问题描述】:
const postSchema = mongoose.Schema(
  id: String,
  name: String,
  isbn: String,
  image: String,
)

var PostMessage = mongoose.model('PostMessage', postSchema);


const getBook = async (req, res) =>  
  const  id  = req.params;

  try 
      const post = await PostMessage.findById(id);
      
      res.status(200).json(post);
   catch (error) 
      res.status(404).json( message: error.message );
  

我想通过 "id" 从我的 mongodb 获取数据。如果我的 id 与 mongodb 中的 id 值匹配,它会获取该对象,但它会抛出错误:

“message”:“模型“PostMessage”的路径“_id”中的值“s-CoAhDKd”转换为 ObjectId 失败”

【问题讨论】:

【参考方案1】:
const  id  = req.params;

try 
    const post = await PostMessage.findById(id: id);
    res.status(200).json(post);
 catch (error) 
  res.status(404).json( message: error.message );

试试上面的

【讨论】:

【参考方案2】:

基于此线程:What's Mongoose error Cast to ObjectId failed for value XXX at path "_id"?

您必须检查您的 ID 是否符合 Mongoose ObjectId 结构的要求:

mongoose.Types.ObjectId.isValid('your id here');

在文档中:https://mongoosejs.com/docs/schematypes.html#objectids,它表示 ObjectID 是 24 个字符的哈希值。 所以“s-CoAhDKd”不是正确的格式;)

【讨论】:

以上是关于通过node.js从mongodb获取数据的主要内容,如果未能解决你的问题,请参考以下文章