使用mongoose的打字稿错误

我用typescript@1.7.5,express@4.13.3,mongoose@4.3.7和mongodb@3.2.0使用node.js

我得到编译错误:

TS2345:types'(error:any,document:any)=> void'的参数不能分配给types为'(err:any)=> void'的参数。

在这行: (error, document) => {

即使有这个编译错误,一切运行正常。
我怎样才能解决这个错误?

 import express = require("express"); import bodyParser = require('body-parser'); import mongoose = require("mongoose"); import contactListModel = require("./contactlistSchema"); var contact = contactListModel.contact; export function removeOne (req: express.Request, res: express.Response) { var id = req.params.id; console.log("delete one contact in database with id: " + id); contact.remove( {_id: new mongoose.Types.ObjectId(id)}, (error, document) => { if(error){ console.log(error); res.sendStatus(500); } else { console.log(document) res.jsonp(document); } } ) } 

contactlistSchema.ts

 import mongoose = require("mongoose"); export var contactlistSchema = new mongoose.Schema({ id: String, name: String, email: String, number: String, type: String }); export interface IContactList extends mongoose.Document{ id: string; name: string; email: string; number: string; type: string } export var contact = mongoose.model<IContactList>("contact", contactlistSchema); 

你得到这个错误,因为Model.remove不提供去除的文档到callback。

所以代码仍然可以运行,但是在你的callback中documentundefined的。

要解决该错误,只需从callback中删除document参数:

 contact.remove( {_id: new mongoose.Types.ObjectId(id)}, (error) => { if(error){ console.log(error); res.sendStatus(500); } else { res.jsonp({success: true}); } } )