Во время работы с Node.js, Mongoose и MongoDB, я обнаружил, что мои мошенники и сеттеры схемы Mongoose не срабатывают при выполнении запроса findOne.
Я нашел старый поток, который говорит о наличии проблемы с getters и seters в версии 2.x, но он утверждает, что с тех пор он был разрешен, и я использую самую последнюю версию Mongoose (3.8.7).
Здесь часть моей схемы
function testGetter(value) {
return value + " test";
}
/**
* Schema
*/
var schema = new Schema({
username: { type: String, required: true, unique: true, get: testGetter }
});
// I have also tried this.
schema.path('username').get(function (value, schemaType) {
return value + " test";
});
Здесь, как я выполняю запрос
Model
.findOne(conditions, fields, options)
.populate(population)
.exec(function (error, doc) {
callback(doc, error);
});
Он отвечает значением имени пользователя, которое не имеет "тестового" пост-исправления. Я здесь что-то не так? Любая помощь будет принята с благодарностью!
Дополнительная информация
Это результат поиска:
{
"username": "Radius"
}
Это значение schema.paths.username.getters после применения одного из двух способов, описанных выше:
[ [Function: testGetter] ]