简体   繁体   中英

Typescript - NodeJS - Mongoose

I've just started using typescript for NodeJS Server development and I've run into the following errors:

./app/api/shoutbox/shoutbox.dao.ts
error TS2339: Property 'statics' does not exist on type 'Schema'

./app/api/shoutbox/shoutbox.controller.ts
error TS2339: Property 'getAll' does not exist on type 'Model<Document>'.

./app/api/shoutbox/shoutbox.controller.ts
error TS2339: Property 'catch' does not exist on type 'Promise<{}>'.

I am using Webpack and TS-Loader. And I've referenced

/// <reference path="mongoose/mongoose.d.ts" />
/// <reference path="node/node.d.ts" />
/// <reference path="express/express.d.ts" />
/// <reference path="mime/mime.d.ts" />
/// <reference path="serve-static/serve-static.d.ts" />
/// <reference path="lodash/lodash.d.ts" />
/// <reference path="bluebird/bluebird.d.ts" />



// shoutbox.model.ts
import mongoose = require('mongoose'); 
var _shoutboxSchema = {
    author: {
        type: String,
        required: true
    },
    created: {
        type: Date,
        default: Date.now
     },
     msg: String
};
export default new mongoose.Schema(_shoutboxSchema);


// shoutbox.dao.ts
import mongoose = require('mongoose');
import Promise = require('bluebird');
import _ = require('lodash');
import shoutboxSchema from './shoutbox.model';

shoutboxSchema.statics.getAll = ():Promise<any> => {
    var _promise = (resolve:Function, reject:Function):void => {
        var _query = {};
        Shoutbox
             .find(_query)
             .exec((err, shoutbox) => {
                err ? reject(err)
                    : resolve(shoutbox);
             });
    };
    return new Promise (_promise);
};
var Shoutbox = mongoose.model('Shoutbox', shoutboxSchema);
export default Shoutbox;

// shoutbox.controller.ts
import ShoutboxDAO from './shoutbox.dao';
import express = require("express");

export class ShoutboxController {
    static  getAll(req:express.Request, res:express.Response):void {
         ShoutboxDAO
            .getAll()
            .then(shoutbox => res.status(200).json(shoutbox))
            .catch(error => res.status(400).json(error));
    }
}

I've tried around for quite some time now but i cant get rid of the errors.

The code itself runs as intended but i keep getting these errors.

Im thankful for any sort of help.

I've encountered similar problems with using the mongoose.d.ts from DefinitelyTyped github repo. It seems it isn't correctly matching the mongoose javascript. I instead use the one from here https://github.com/vagarenko/mongoose-typescript-definitions .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM