Mungo Eingabe Problem mit Typoskript

Baue ich eine app mit Mungo und Typoskript. Hier ist ein einfaches Modell, das ich gemacht habe:

import * as callbackMongoose from 'mongoose';
var mongoose = callbackMongoose;
mongoose.Promise = global.Promise;
const Schema = mongoose.Schema;

var userSchema = new Schema({
    username: String,
    email: String,
    hash: String
});

export default mongoose.model('User', userSchema);

Funktioniert es gut, aber ich brauche zu werfen jedes Dokument vor dem Zugriff auf Eigenschaften. Ich lese eine Anleitung, die gesagt, ich könnte dies tun:

interface IUser extends mongoose.Document {
  username: String;
  email: String;
  hash: String;
}

export default mongoose.model<IUser>('User', userSchema);

Mein problem ist, dass der Typ Mungo scheint nicht, haben die Eigenschaft Document. Es hat auch nicht die Eigenschaft ObjectId. Wenn ich cast Mungo und verwenden Sie diese Mitglieder es funktioniert Prima. Es scheint zu sein, eine Eingabe-Ausgabe.

Installierte ich die mongoose Eingabe etwa so:

npm install @types/mongoose --save

Den Testungen Arbeit tun, für die Schema-und Sie sind gut für alle anderen Bibliotheken, die ich benutze. Ist etwas falsch mit dieser Art von Definitionen? Mache ich etwas falsch?

InformationsquelleAutor user5505266 | 2016-11-27



One Reply
  1. 3

    Für [email protected]
    Ich denke, dass Sie möglicherweise verwenden

    npm install @types/mongoose --save

    statt:

    npm install @typings/mongoose --save

    Dieser voll ist Beispiel:

    Datenbank.ts

    import mongoose = require('mongoose');
    
    mongoose.Promise = global.Promise;
    
    mongoose.connect('mongodb://admin:[email protected]:49437/samples');
    
    export { mongoose };

    UserData.ts

    import { mongoose } from './../../Services/Database';
    
    export interface UserData {
        is_temporary: boolean;
        is_verified: boolean;
        status: boolean;
        username: string;
    }
    
    export interface IUserData extends UserData, mongoose.Document, mongoose.PassportLocalDocument { };

    UserModel.ts

    import { IUserData } from './UserData';
    import { mongoose } from './../../Services/Database';
    
    import * as passportLocalMongoose from 'passport-local-mongoose';
    import Schema = mongoose.Schema;
    
    
    const UserSchema = new Schema({
      username: { type: String, required: true },
      password: String,
      status: { type: Boolean, required: true },
      is_verified: { type: Boolean, required: true },
      is_temporary: { type: Boolean, required: true }
    });
    
    UserSchema.plugin(passportLocalMongoose);
    
    var UserModel;
    try {
      //Throws an error if 'Name' hasn't been registered
      UserModel = mongoose.model('User')
    } catch (e) {
      UserModel = mongoose.model<IUserData>('User', UserSchema);
    }
    
    export = UserModel;

    Ich auch das ganze Projekt Beispiel für die Verwendung Typoskript, node.js, Mungo & passport.js gleich hier: https://github.com/thanhtruong0315/typescript-express-passportjs

    Glück.

    • Es stellt sich heraus, das Problem war mit der Tatsache, dass ich zugewiesen, die Sie importieren, um eine variable. Ich fixierte es mit einem Ansatz ähnlich, was Sie beschrieben haben, in Database.ts so dass Ihre Antwort richtig ist. Danke!
    • Danke, dass Sie so viel MACHAAA!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.