【问题标题】:mongoose router find by reference properety猫鼬路由器通过引用属性查找
【发布时间】:2022-01-26 14:50:50
【问题描述】:

我正在我的项目中工作,我已经为后端编写了 server.js 文件 这是我的猫鼬模式和模型

const BookSchema = new mongoose.Schema({
title: {
  type: String,
  required: true
},
isbn: {
  type: String,
  required: true
},
author: {
  type: String,
  //required: true
},
description: {
  type: String
},
published_date: {
  type: Date
},
publisher: {
  type: String
},
updated_date: {
  type: Date,
  default: Date.now
}
});

// make data model from schema
const Book = mongoose.model('book', BookSchema);

这是我的路由器

router.get('/:id', (req, res) => {


 Book.findById(req.params.id)
.then(book => res.json(book.title))
.catch(err => res.status(404).json({ nobookfound: 'No Book found' }));
});

如何通过 get 请求传递 Book.isbn 以获取 Book.title

【问题讨论】:

  • 不明白你的问题
  • 我的问题是如何在此代码中使用 book.isbn 搜索参数而不是 id router.get('/:id', (req, res) => { Book.findById(req.params. id) .then(book => res.json(book.title)) .catch(err => res.status(404).json({ nobookfound: '没有找到书' })); });

标签: javascript node.js express mongoose


【解决方案1】:

只需使用 findOne 方法

Book.findOne({isbn:"pass isbn value here"})
.then(book => res.json(book.title))
.catch(err => res.status(404).json({ nobookfound: 'No Book found' }));
});

【讨论】:

  • 所以完整的代码是code router.get('/:isbn', (req, res) => { Book.findOne({isbn:" isbn "}) .then( book => res.json(book.title)) .catch(err => res.status(404).json({ nobookfound: '没有找到书' })); }); }); `code`是这样的
  • 试着让我知道
  • 我尝试遵循代码 router.get('/:isbn', (req, res) => { Book.findOne({isbn:"isbn"}) .then(book => res.json(book.title)) .catch(err => res.status(404).json({ nobookfound: 'No Book found' })); }); 我通过 Insomina 测试我发送了以下获取请求 http://localhost:5000/20 并收到以下回复 { "nobookfound": "No Book found" }
  • 好吧..这是你需要的代码,为什么它与其他东西有关失败
  • 我试过了,但它不起作用
猜你喜欢
  • 1970-01-01
  • 2019-07-12
  • 1970-01-01
  • 1970-01-01
  • 2013-05-06
  • 2015-05-31
  • 2017-12-31
  • 2021-10-17
  • 2021-04-14
相关资源
最近更新 更多