WedX - журнал о программировании и компьютерных науках

Sails.js Одна ко многим ассоциациям TypeError: невозможно преобразовать значение null в объект

Недавно я получаю эту странную ошибку. Раньше его не было, и я не помню, чтобы он сильно менялся.

error: Error (E_UNKNOWN) :: Encountered an unexpected error
TypeError: Cannot convert null to object
    at hasOwnProperty (native)
    at utils.object.hasOwnProperty (/home/mandeep/freelance/hellos/node_modules/sails-postgresql/node_modules/waterline-sequel/sequel/lib/utils.js:28:14)
    at /home/mandeep/freelance/hellos/node_modules/sails-postgresql/node_modules/waterline-sequel/sequel/where.js:259:11
    at Array.forEach (native)
    at WhereBuilder.complex (/home/mandeep/freelance/hellos/node_modules/sails-postgresql/node_modules/waterline-sequel/sequel/where.js:177:36)
    at complexWhere (/home/mandeep/freelance/hellos/node_modules/sails-postgresql/node_modules/waterline-sequel/sequel/index.js:244:16)
    at find (/home/mandeep/freelance/hellos/node_modules/sails-postgresql/node_modules/waterline-sequel/sequel/index.js:85:23)
    at Cursor.populateBuffers [as $populateBuffers] (/home/mandeep/freelance/hellos/node_modules/sails-postgresql/lib/adapter.js:539:31)
    at Cursor.run (/home/mandeep/freelance/hellos/node_modules/sails-postgresql/node_modules/waterline-cursor/cursor/cursor.js:45:8)
    at runJoins (/home/mandeep/freelance/hellos/node_modules/sails-postgresql/node_modules/waterline-cursor/index.js:51:10)

Details:  TypeError: Cannot convert null to object

Ошибка исчезает, когда я удаляю ассоциацию «один ко многим» из пользовательской модели. Вот модели для справки:

Базовая база данных — postgres

User.js

module.exports = {

  tableName: "users",

  attributes: {

    name: {
        type: "string",
        required: false
    },

    permission: {
        type: "integer",
      defaultsTo: 2

    },

    primary_phone: {
      model: "phone",
      required: true
    },

    phone: {
        collection: "phone",
        via: "id"
    },

    primary_email: {
      model: "email",
      required: true
    },

    email: {
        collection: "email",
        via: "id"
    }

  }
};

Phone.js

module.exports = {

  attributes: {

    number: {
      type: "string",
      required: true
    },

    owner: {
        model: "user"
    }

  }

};

Email.js

module.exports = {

  attributes: {

    email: {
        type: "email",
        required: true
    },

    owner: {
        model: "user"
    },

    verified: {
        type: "boolean",
        defaultsTo: false
    }   

  }
};

Ответы:


1

Я не думаю, что вы можете сделать via: "id" - поле id не относится к модели пользователя. Вы должны создать новый атрибут как для модели Email, так и для телефона и связать их с моделью User.

Например,

Пользователь.js:

...
phone: {
    collection: "phone",
    via: "nonPrimaryPhoneOwner"
},
email: {
    collection: "email",
    via: "nonPrimaryEmailOwner"
}
...

Электронная почта.js:

...
nonPrimaryEmailOwner: {
    model: "user"
}
...

Телефон.js:

...
nonPrimaryPhoneOwner: {
    model: "user"
}
...
21.08.2014
  • Я использовал этот код в прошлом без каких-либо проблем. Сегодня заметил странную вещь! Он отлично работает на моей рабочей системе, но не работает на моем домашнем компьютере. Я проверю версии адаптера Sailes-Postgres, как только доберусь до дома. 22.08.2014
  • Новые материалы

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

    Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
    В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


    Для любых предложений по сайту: [email protected]