Невозможно получить виртуалы Mongoose как часть объекта результата

bị»м объявив виртуальный, который я хочу, чтобы появиться как часть результатов его схемы "с запросами, но этоне появляется, когда я делаю console.log на объекте. Вот'S схема:

var schema = new mongoose.Schema(
{
    Name: { type: String }
},
{
    toObject: { virtuals: true }
});

schema.virtual("Greet").get(function()
{
    return "My name is " + this.Name;
});

Разве это toObject не должен устанавливать виртуальное как свойство результатов каких-либо запросов? Это не так, как и schema.set ("для объекта", {virtuals: true}). Я делаю это правильно?

 Mike Pateras30 окт. 2012 г., 17:03
м с использованием версии 3.3.1.
 Mike Pateras31 окт. 2012 г., 01:05
myModel.find ({}). exec (function (err, results) {console.log (JSON.stringify (results [0]));}
 Oddman21 июл. 2013 г., 20:10
@MikePateras - у тебя получилось? Если так, то как? Я'у меня точно такая же проблема.

Ответы на вопрос(2)

Doc.find вместоDoc.findOne и поэтому я пытался получить доступ к виртуальному в массиве документов, а не в самом документе.

JSON.stringify в вашемconsole.log вызов, который вызываетtoJSON Метод на экземпляре модели, нет.toObject

Так что либо опускаемJSON.stringify в вашем звонке:

console.log(results[0]);

Или установитеtoJSON вариант на схеме как тыв настоящее время настройкаtoObject вариант.

...
{
    toObject: { virtuals: true },
    toJSON: { virtuals: true }
});
 Oddman08 авг. 2013 г., 17:28
Я закончила это исправить - я неНе знаю, мне нужно было определить оба эти свойства. Гнал меня с ума. лол
 steampowered01 авг. 2015 г., 01:16
В Mongoose v4.0 я могу заставить виртуалы работать после запроса только сtoJSON: { virtuals: true }нет необходимостиtoObject: { virtuals: true }
 elhoyos14 мар. 2017 г., 22:38
@ChrisRich: вы можете проследить до 2.7.X документовvirtuals вариант вtoObject а также .toJSONВот текущий.
 ChrisRich07 июл. 2015 г., 09:32
Где в документации указано, что вы должны добавить toObject: {virtuals: true}, toJSON: {virtuals: true}?
 Medet Tleukabiluly20 июл. 2015 г., 10:38
@ChrisRch это 'весь смыслв этом нет ничего
 Suhayb20 янв. 2019 г., 21:40
@JohnnyHK Я не понимаю, почему mongoose автоматически вызывает toJSON?
 Enkode15 сент. 2015 г., 09:23
Это сработало для меня. UserSchema.set (»toJSON», {getters: true, virtuals: true}); UserSchema.set (»для объекта', {getters: true, virtuals: true});
 Deminetix14 мая 2014 г., 02:50
Определение обоих свойств дляtoObject а такжеtoJSON работал на меня
 Nate10 мая 2014 г., 02:45
Большой вопрос; отличный ответ. Это должно быть принято как правильное.
 ChrisRich23 июл. 2015 г., 03:00
Тот'Один из самых больших минусов Мангуста. Плохая документация и причуды. В настоящее время работает над проектом с использованием собственного драйвера MongoDB без Mongoose. Немного более громоздко, но выполняет свою работу.
 JohnnyHK20 янв. 2019 г., 22:03
@Suhayb Мангуст не делаетне вызывай это,JSON.stringify() делает. Отдокументы: "Если значение имеет метод toJSON (), оно 'Ответственный за определение того, какие данные будут сериализованы. "
 Oddman21 июл. 2013 г., 20:09
У меня была такая же проблема, по крайней мере, 2 дня - и ни одна комбинация toObject / toJSON с включенными виртуальными системами не работала. Я просто могуполучить виртуалы для вывода. За рулем меня абсолютно бэтти!

Ваш ответ на вопрос