Вопрос

Я получаю результат (объект) обратно из запроса в мангели и хочу заменить / удалить несколько клавиш, прежде чем я затрагиваю объект и отправлю его клиенту.

Когда я console.log объект, все приятно (все ключи перечислены, ничего более). Когда я делаю для ... как на объекте, скрытые поля всплывают из ниоткуда (и ключей интереса, не). Они имеют смысл - они принадлежат к мангусе - но я не хочу их. То же самое происходит, при использовании Object.keys или Object.getownPropertynames на объекте - скрытые поля всплывающие, не полезно.

Итак, я хотел проверить элемент с помощью util.inspect (OBJ, True, Null, True) и журнал результата к консоли. Результат на консоли одинаково, как будто я бы с помощью консоли. Открыл объект непосредственно без проверки.

Теперь два вопроса;

  1. Как правильно проверить объект, чтобы я на самом деле получил внутреннюю / скрытую информацию о объекте?
  2. Как я могу перейти за объект и только получить поля? (Да, я делаю проверку HASOWNPROPERTY в LOOP FORESHONGE)

    // редактировать

    Хорошо, я получил это. После некоторого расследования я понял, что мангустовый объект проксивает свои свойства и имеет функцию Tojson, которая объясняет, почему Console.logs были в ожидаемой выходной структуре. Решение состоит в том, чтобы использовать собственный метод Mongoosose Hobject;

    mongooseObj.toObject({ getters: true, virtuals: false })
    
    .

    Таким образом, я могу перейти за Object.getowanPropertynames и заменить / удалить ключи, я не хочу, чтобы клиент узнал о!

Это было полезно?

Решение

Я собираюсь догадаться, что вы смотрите на документ объект , возвращаемый в процессе мангусты, когда вы действительно просто хотитеСмотрите данные.Если мое предположение верно, вы, вероятно, захотите что-то подобное:

Model.findOne({ name: 'john' }, function (err, doc) {
    var data = doc.toObject();

    // do whatever you need to with data
    delete data.age;
    delete data.weight;
    data.isAwesome = true;

    // now stringify the data and do something with it
    callback(JSON.stringify(data));
});
.

Другие советы

Кроме того, если вы хотите получить доступ к определенным поле из Document Вы можете взглянуть на:

документ # Получить

// path
doc.get('age') // 47

// dynamic casting to a string
doc.get('age', String) // "47"
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top