从 mongodb 到 node.js 获取数据

get data from mongodb through node.js

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 的值匹配,它会得到那个对象,但它会抛出错误:

{“消息”:“对于模型“PostMessage”的路径“_id”中的值“s-CoAhDKd”,转换为 ObjectId 失败”}

基于此线程: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,它表示 ObjectIDs 是 24 个字符的哈希值。 所以“s-CoAhDKd”不是正确的格式 ;)

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 });
}

试试上面的方法