2017-02-16 7 views
2

tsコンパイラは、 'Document'型にプロパティが存在しないことを示します。Mongooseプロパティ 'x'が型 'Document'に存在しません

このため、モデル上のプロパティは設定できません。 Iコンソールにユーザオブジェクトを印刷する場合、私が得るすべては { "_id": "長い六角ID番号"}であり、以下のように私のモデルが設定されている

users.ts

import * as mongoose from 'mongoose'; 
import * as crypto from 'crypto'; 
import * as jwt from 'jsonwebtoken'; 

var userSchema = new mongoose.Schema({ 
    email: { 
     type: String, 
     unique: true, 
     required: true 
    }, 
    firstMidname: { 
     type: String, 
     required: true 
    }, 
    lastName: { 
     type: String, 
     required: true 
    }, 
    hash: String, 
    salt: String 
}); 

userSchema.methods.setPassword = setPassword; 


userSchema.methods.validPassword = validPassword; 

userSchema.methods.generateJwt = generateJwt; 

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

API接続ポイント api.ts

import * as express from 'express'; 
import * as mongoose from 'mongoose'; 
import * as passport from 'passport'; 

var User = mongoose.model('User'); 

var router = express.Router(); 

router.post('/', createUser); 

function createUser(req, res){ 
var user = new User(); 
    console.log(user); 
    user.firstMidName = req.body.firstName; 
    user.lastName = req.body.lastName; 
    user.setPassword(req.body.password); 

    user.save((err) => { 
     console.log("saving user"); 
     var token; 
     token = user.generateJwt(); 
     res.status(200); 
     res.json({ 
      'token': token 
     }); 
    }); 
} 

export = router; 

私はどのように修正するか、この問題のトラブルシューティングを行うことができますか? user.saveブロック内の何も実行されません。

EDIT: 2つのことは無関係のようです。私は今データベースに保存することができますが、タイスクリプトエラーが続く。これは予想される動作ですか?

+0

'user.generateJwt();'関数は非同期ではありませんか? – chridam

+0

そうではありません。私は簡潔さからそれを切り捨てました。また、行の保存ユーザーは、それが解決策ではありません問題 – xerotolerant

答えて

-1

私がしたように誰もがこの解決策を探しているなら、私は正確に同じ問題を持っていたあなたはvar userにタイプを追加する必要が実現。

var user: any = new User();である必要があります。

+0

するgenerateJwtために十分になっていないと思うように私をリードしているログに記録したことがありません。任意のものを使用することにより、型チェックを排除します。私はそれをどのように解決して、やり直すのかを考えようとします。忘れました。 – xerotolerant

関連する問題