Свойство отсутствует, когда я добавляю новое свойство и печатаю весь объект [дубликат]

Метод HashPartitioner.getPartition принимает в качестве аргумента ключ и возвращает индекс раздела, к которому принадлежит ключ. Разделитель должен знать, что такое действительные индексы, поэтому он возвращает числа в правом диапазоне. Количество разделов задается с помощью аргумента конструктора numPartitions.

Реализация возвращается примерно key.hashCode() % numPartitions. Подробнее см. Partitioner.scala .

71
задан Toli Zaslavskiy 24 January 2013 в 17:03
поделиться

2 ответа

Для таких случаев, когда вам нужен простой объект JS вместо экземпляра полной модели, вы можете вызвать lean() в цепочке запросов так:

Survey.findById(req.params.id).lean().exec(function(err, data){
    var len = data.survey_questions.length;
    var counter = 0;

    _.each(data.survey_questions, function(sq){
        Question.findById(sq.question, function(err, q){
            sq.question = q;

            if(++counter == len) {
                res.send(data);
            }
        });
    });
});

Этот способ data уже является простым JS-объектом, с которым вы можете манипулировать, как вам нужно.

131
ответ дан JohnnyHK 26 August 2018 в 02:53
поделиться

Я думаю, что документация Mongoose не делает этого достаточно ясным, но данные, возвращенные в запросе (хотя вы можете res.send () это) на самом деле объект Mongoose Document, а НЕ объект JSON. Но вы можете исправить это одной строкой ...

Survey.findById(req.params.id, function(err, data){
    var len = data.survey_questions.length;
    var counter = 0;

    var data = data.toJSON(); //turns it into JSON YAY!

    _.each(data.survey_questions, function(sq){
        Question.findById(sq.question, function(err, q){
            sq.question = q;

            if(++counter == len) {
                res.send(data);
            }
        });
    });
});
38
ответ дан Toli Zaslavskiy 26 August 2018 в 02:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: