【发布时间】:2016-06-05 13:24:02
【问题描述】:
您好,我尝试将我的代码从简单的 js 重写为 typescript,但 mongoose 模式存在一些问题...
/// <reference path="../typings/tsd.d.ts" />
import * as mongoose from 'mongoose';
import * as bcrypt from "bcrypt";
var SALT_WORK_FACTOR = 10;
var mongodbURL = 'mongodb://localhost/test';
var mongodbOptions = {};
mongoose.connect(mongodbURL, mongodbOptions);
var Schema = mongoose.Schema;
// User schema
var User = new Schema({
username: { type: String, required: true, unique: true },
password: { type: String, required: true },
is_admin: { type: Boolean, default: false },
created: { type: Date, default: Date.now }
});
// Bcrypt middleware on UserSchema
User.pre('save', function(next) {
var user = this;
if (!user.isModified('password')) return next();
bcrypt.genSalt(SALT_WORK_FACTOR, function(err, salt) {
if (err) return next(err);
bcrypt.hash(user.password, salt, function(err, hash) {
if (err) return next(err);
user.password = hash;
next();
});
});
});
//Password verification
User.methods.comparePassword = function(password, cb) {
bcrypt.compare(password, this.password, function(err, isMatch) {
if (err) return cb(err);
cb(isMatch);
});
};
var userModel: mongoose.Model<any> = mongoose.model("User", User);
//Define Models
// Export Models trying ALL WAYS (((((
declare var exports: any;
exports.userModel = userModel;
(module).exports = userModel;
exports = {
userModel: userModel
}
export = userModel; // EXPORT
但是当我编译 *.ts amd 导入这个文件时,我看到:
import {userModel} from '../config/mongo_database';
没有导出的成员“userModel”。
或
import db = require('../config/mongo_database');
“模型”类型上不存在属性“userModel”
但是console.log(db)给我看
{ userModel:
{ [Function: model]
base:
{ connections: [Object],
plugins: [],
models: [Object],
modelSchemas: [Object],
options: [Object] },
modelName: 'User',
model: [Function: model],
............
是否有任何方法不使用 TS 组合(接口、类、模式、导出)而仅使用猫鼬模式? )
附:对不起我的英语..
【问题讨论】:
标签: node.js mongoose typescript ecmascript-6