【问题标题】:Select specific attributes from table in SequelizeJS从 SequelizeJS 中的表中选择特定属性
【发布时间】:2016-07-26 03:43:23
【问题描述】:

这些是我的表格(并非包括所有列)和关系

var client = schema.define('client', {
    name: {
        type: Sequelize.STRING,
        allowNull: false
    },
}

var task = schema.define('task', {
    name: {
        type: Sequelize.STRING,
        unique: true,
        allowNull: false
    },
    description: {
        type: Sequelize.STRING,
    }
}

var clientTask = schema.define('clientTask', {
    value: {
        type: Sequelize.STRING,
        allowNull: false,
        defaultValue: false
    },
}

client.belongsToMany(task, { through: clientTask });
task.belongsToMany(client, { through: clientTask });

我只想从任务中获取name 和从clientTask 中获取value,我通过客户端ID 进行搜索,这是我目前尝试的。

client.findAll({ 
    attributes: [], 
    where: {id: clientId}, 
    include: [{ 
        model: task, 
        attributes: ['name'] 
    }]
}).then(function (clients) { 
    //client.tasks is array with task objects(models) with only name attribute
    //client.tasks[0].clientTask is object(models) with all attributes but I want only `value`
}

基本上我想要的是这个查询

Select
  tasks.name,
  clienttasks.value
From
  clients Inner Join
  clienttasks
    On clienttasks.clientId = clients.id Inner Join
  tasks
    On clienttasks.taskId = tasks.id
Where clients.id = ?

【问题讨论】:

    标签: javascript mysql node.js orm sequelize.js


    【解决方案1】:

    你可以这样查询

    clients.findById(1, {
        attributes: ['id'],
        include: [{
            model: tasks,
            attributes: ['name'],
            required: false
        }]
    }).then(function(client) {
        return client.tasks.map(function(task) {
            return {
                name: task.name,
                value: task.clients_tasks.value
            };
        });
    }).then(function(result) {
        console.log(result);
        // The rest of you logic here...
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-05
      • 2017-01-20
      • 2010-12-14
      • 2019-02-16
      • 1970-01-01
      • 1970-01-01
      • 2022-11-03
      相关资源
      最近更新 更多