我正在尝试解决此错误“无法解构属性'relatedQuery',但没有成功

时间:2019-09-09 12:54:26

标签: node.js adonis.js

我与透明阿多尼斯建立了一对多的关系,当我尝试获取具有特定B相关数据(A hasMany B)的A数据时,它显示了此错误:

  

无法解构与属性相关的'undefined'或'null'查询。

我该如何解决?

通常我一直试图从A表中获取所有数据都没有成功, 然后我尝试从B表中获取数据,而A数据为空

(我使用adonisjs)

//model code
class Device extends Model {
    properties () {
        this.hasMany('App/Models/Property');
    } 
}

class Property extends Model {
    devices() {
        return this.belongsTo('App/Models/Device');
    } 
}

// migration code
class DeviceSchema extends Schema {
    up () {
        this.create('devices', (table) => {
            table.increments();
            table.string('nome');
            table.string('photo');
            table.text('descricao');
            table.timestamps();
        });
    }

    down () {
        this.drop('devices');
    }
}

class PropertySchema extends Schema {
    up () {
        this.create('properties', (table) => {
            table.increments();
            table.string('icon');
            table.string('nome', 40);
            table.integer('deviceId')
                .unsigned()
                .notNullable()
                .references('id')
                .inTable('devices')
                .onUpdate('CASCADE')
                .onDelete('CASCADE');
            table.timestamps();
        });
    }

    down () {
        this.drop('properties')
    }
}

// controller code to get data
const Dev = await Device
    .query()
    .limit(4)
    .with('properties')
    .fetch();

console.log(Dev.toJSON())

我需要所有设备数据以及它们的特定属性数据。

1 个答案:

答案 0 :(得分:0)

问题在这里:

 class Device extends Model {
     properties () {
         this.hasMany('App/Models/Property');
     } 
 }

您需要在关系函数调用中添加“ return”:

    class Device extends Model {
        properties () {
      --->>    return this.hasMany('App/Models/Property');
        } 
    }

AdonisJs文档:https://adonisjs.com/docs/4.1/relationships