Javascript 在Typescript中向请求添加数据

Javascript 在Typescript中向请求添加数据,javascript,mongodb,express,typescript,Javascript,Mongodb,Express,Typescript,我正在将代码从javascript转换为typescript,但在尝试向请求中添加数据时遇到了这个问题,这在typescript中显然是不可能的。从MongoDb读取并添加到请求中的这本书用于.get()和.delete()方法 //bookModel.js var mongoose=require('mongoose'); var bookModel=mongoose.Schema({ 标题:字符串, 作者:String, 类型:弦乐, 读取:{type:Boolean,默认值:false}

我正在将代码从javascript转换为typescript,但在尝试向请求中添加数据时遇到了这个问题,这在typescript中显然是不可能的。从MongoDb读取并添加到请求中的这本书用于.get()和.delete()方法

//bookModel.js
var mongoose=require('mongoose');
var bookModel=mongoose.Schema({
标题:字符串,
作者:String,
类型:弦乐,
读取:{type:Boolean,默认值:false}
});
module.exports=mongoose.model('Book',bookModel',Book');
//bookController.js
var Book=require('./../models/bookModel'),
module.exports=函数(){
var router=express.router();
router.route(“/:bookId”)
.全部(功能(请求、恢复、下一步){
Book.findById(请求参数bookId,函数(err,Book){
如果(错误)
资源状态(500)。发送(错误);
如果(书)
{
req.book=书本;
next();
}
其他的
{
res.status(404).send('找不到书');
}
})
})
.get(函数(请求、恢复){
res.json(请求书);
})
.删除(功能(请求、恢复){
请求书本删除(功能(错误,书本){
如果(错误)
资源状态(500)。发送(错误);
其他的
res.sendStatus(200);
})
})

如何在typescript中将数据添加到请求中,以及如何使用以下方法检索书籍?

在typescript中,您可以定义类型。您可以通过定义一个类型来模拟JS对象行为,该类型的键可以是字符串,值可以是任何形式:

type Indexed = {
  [key: string]: any;
};
现在您可以有一个如下所示的函数定义:

router.route('/:bookId')
        .all(function(req: Indexed, res, next) {
明确你的意图通常是有用的,但目前还没有很好地反映出来

req.book = book; // works

您应该能够通过使用
函数(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()方法?可能重复