【发布时间】:2017-05-18 11:48:47
【问题描述】:
我正在将我的代码从 javascript 转换为 typescript,但是在尝试将数据添加到请求时遇到了这个问题,这在 typescript 中显然是不可能的。这本书从 MongoDb 读取并添加到请求中,用于 .get() 和 .delete() 方法。
// bookModel.js
var mongoose = require('mongoose');
var bookModel = mongoose.Schema({
title: String,
author: String,
genre: String,
read:{type:Boolean, default:false}
});
module.exports = mongoose.model('Book', bookModel, 'Book');
// bookController.js
var Book = require('./../models/bookModel'),
module.exports = function(){
var router = express.Router();
router.route('/:bookId')
.all(function(req,res,next){
Book.findById(req.params.bookId,function(err,book){
if(err)
res.status(500).send(err);
else if(book)
{
req.book = book;
next();
}
else
{
res.status(404).send('No book found');
}
})
})
.get(function(req,res){
res.json(req.book);
})
.delete(function(req,res){
req.book.remove(function(err,book){
if(err)
res.status(500).send(err);
else
res.sendStatus(200);
})
})
如何在 typescript 中将数据添加到请求中,以及如何通过以下方法检索图书?
【问题讨论】:
-
你应该可以使用
function(req:express.Request, res:express.Response){}来声明req和res的类型 -
在我的 TS .all() 函数中,我使用 express 中的类型为
public all(req:Requst ,res: Response ,next: NextFunction){ ... },但您不能像在 JS 中那样只将数据添加到像req.book = book这样的请求中。还有其他方法可以将请求中的数据传递给 get() 和 delete() 方法吗?
标签: javascript mongodb express typescript