首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sails.js One to多个关联-- TypeError:无法将null转换为对象

sails.js One to多个关联-- TypeError:无法将null转换为对象
EN

Stack Overflow用户
提问于 2014-08-21 21:04:19
回答 1查看 1.2K关注 0票数 0

最近我犯了一个奇怪的错误。它之前不在那里,我不记得有什么变化。

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
module.exports = {

  attributes: {

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

    owner: {
        model: "user"
    }

  }

};

Email.js

代码语言:javascript
复制
module.exports = {

  attributes: {

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

    owner: {
        model: "user"
    },

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

  }
};
EN

回答 1

Stack Overflow用户

发布于 2014-08-21 22:39:45

我认为您不能使用via: "id" -- id字段不引用用户模型。您应该为电子邮件和电话模型创建一个新的属性,并将它们链接回用户模型。

例如,

User.js:

代码语言:javascript
复制
...
phone: {
    collection: "phone",
    via: "nonPrimaryPhoneOwner"
},
email: {
    collection: "email",
    via: "nonPrimaryEmailOwner"
}
...

Email.js:

代码语言:javascript
复制
...
nonPrimaryEmailOwner: {
    model: "user"
}
...

Phone.js:

代码语言:javascript
复制
...
nonPrimaryPhoneOwner: {
    model: "user"
}
...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25435890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档