渴望加载:如何禁用包含表的特定字段

时间:2015-07-30 11:41:56

标签: postgresql crud sequelize.js eager-loading

我正在尝试使用PostgreSQL在Sequelize中执行 Eager Loading ,我需要找到具有特定邮件 ID的用户或基本上,我在邮件模型上执行查找操作,同时使用 include 包含用户模型

UserModel:

module.exports = function (sequelize, Sequelize) {


    var User = sequelize.define('User', {
        userId: {
            type: Sequelize.INTEGER,
            primaryKey: true,
            autoIncrement: true
        },
        firstname: {
            type: Sequelize.STRING,
            require: true
        },
        lastname: {
            type: Sequelize.STRING,
            require: true
        },
        age: {
            type: Sequelize.INTEGER,
            require: true
        },
        phone: {
            type: Sequelize.STRING,
            require: true
        },
        location: {
            type: Sequelize.STRING,
            require: true
        },
        createdAt: {
            type: Sequelize.DATE,
            defaultValue: Sequelize.NOW
        },
        updatedAt: {
            type: Sequelize.DATE,
            defaultValue: Sequelize.NOW
        }
    });

    return User;

};



MailModel:

module.exports = function (sequelize, Sequelize) {



    var User = require('./User.js')(sequelize, Sequelize)


    var Mail = sequelize.define('Mail', {
        name: {
            type: Sequelize.STRING,
            require: true
        }
    });


    Mail.belongsTo(User);

    return Mail;
};



MailController:

var db = require('../services/db.js');

module.exports = {
    create: function (req, res, next) {

        var Mailm = db.MailModel;
        var name = req.body;
        try {

            db.sequelize.sync().then(function () {

                Mailm.create(name).then(function (found) {

                    return res.json({
                        success: true,
                        message: found.get({
                            plain: true
                        })
                    });
                })

            });

        } catch (ex) {
            res.json({
                success: false,
                exception: ex
            });
            return;
        }

    },
query: function (req, res, next) {

        var Mailm = db.MailModel;
        var Userm = db.UserModel;
        var name = req.body;


        var option = {};
        option.where = name;
        option.include = [{
            model: Userm

        }];

        try {
            Mailm.findAll(option).then(function (found) {
                console.log(found);
                return res.json({
                    success: true,
                    message: found
                });

            });
        } catch (ex) {
            res.json({
                success: false,
                exception: ex
            });
            return;
        }
    }



};

它以完全正确的方式返回用户和邮件表的记录。

  

输出:

{
"success": true,
"message":[
{
"id": 2,
"name": "Mailb2",
"createdAt": "2015-07-30T07:32:51.807Z",
"updatedAt": "2015-07-30T07:32:51.807Z",
"UserUserId": 2,
     "User":{
              "userId": 2,
              "firstname": "Prerna",
              "lastname": "Jain",
              "age": 20,
              "phone": "9812123456",
              "location": "Sirsa",
              "createdAt": "2015-07-30T07:30:48.000Z",
              "updatedAt": "2015-07-30T07:30:48.000Z"
             }
         }
 ]
} 

但我想禁用用户表的 createdAt updatedAt 字段,这样它就不会给我用户输出中的这两个字段。

我已经尝试过如何做到这一点,但仍然徒劳无功。任何人都可以帮助我。

1 个答案:

答案 0 :(得分:0)

您可以使用

    Model.findAll({
      attributes: { exclude: ['baz'] }
    });

有关属性的更多示例 - http://docs.sequelizejs.com/en/latest/docs/querying/#attributes