Может ли кто-нибудь сказать мне, как отдать документ, извлеченный из MongoDB, в класс, который я создал сам? Я не хочу использовать Mongoose, я использую github.com/christkv/mongodb-legacy v2.0.13Кастинг документа MongoDB строго типизированному классу
Значения документа, возвращенное из MongoDB
{
id { MongoDb ID},
email: '[email protected]',
passwordHash: '$2a$04$Wjan4CloaZRYj60MGsDb6e7x11e1QYkjW3N2q5JYBDaKBNipLti36',
passwordSalt: '$2a$04$Wjan4CloaZRYj60MGsDb6e',
id: 'mrpmorris'
}
Код, который не в состоянии выполнить
var user = Object.create(User.prototype, document)
исключение брошено
TypeError: Property description must be an object: $2a$04$Wjan4CloaZRYj60MGsDb6e
at defineProperties (native)
at Function.create (native)
класс пользователя
var assert = require('assert')
var bcrypt = require('bcrypt')
var User = (function() {
function User() {
this.passwordSalt = "hello"
}
User.prototype.constructor = User
User.prototype.setPassword = function (newPassword, callback) {
var self = this
assert.ok(newPassword != null, "newPassword cannot be null")
assert.ok(newPassword.length >= 8)
bcrypt.genSalt(2, function (err, salt) {
self.passwordSalt = salt
bcrypt.hash(newPassword, salt, function (err, hash) {
self.passwordHash = hash
callback(err);
})
});
}
User.prototype.checkPassword = function (password, callback) {
var self = this
bcrypt.hash(self.passwordHash, self.passwordSalt, function (err, hash) {
callback(err, hash === self.passwordHash)
})
}
return User
})()
exports.User = User
Почему бы вам не взять пользовательский документ в качестве параметра в конструкторе? – cbass