Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在从数据到数据的JSON响应中,从sequelize.js include方法获取错误的对象名称_Node.js_Postgresql_Sequelize.js - Fatal编程技术网

Node.js 在从数据到数据的JSON响应中,从sequelize.js include方法获取错误的对象名称

Node.js 在从数据到数据的JSON响应中,从sequelize.js include方法获取错误的对象名称,node.js,postgresql,sequelize.js,Node.js,Postgresql,Sequelize.js,我有一个表report\u data,它属于daily\u entrytable,但是当我调用api时,我希望得到daily\u entrytable的所有数据,它会发送如下响应 输出 { "response_code": "0", "message": "Operation is successfully executed", "status": "succes

我有一个表
report\u data
,它属于
daily\u entry
table,但是当我调用api时,我希望得到
daily\u entry
table的所有数据,它会发送如下响应

输出

{
    "response_code": "0",
    "message": "Operation is successfully executed",
    "status": "success",
    "data": {
        "id": 1,
        "user_id": 1,
        "date": "12-10-2020",
         other data ....
        "is_active": true,
        "createdAt": "2020-10-21T06:25:57.877Z",
        "updatedAt": "2020-10-21T06:25:57.877Z",
        "report_datum": {
            "id": 1,
            "entry_id": 1,
            "Date": null,
            "report_document_id": "2",
            "createdAt": "2020-10-21T06:26:02.642Z",
            "updatedAt": "2020-10-21T06:26:02.642Z"
        }
    },
    "level": "info",
    "timestamp": "2020-10-21T06:25:45.947Z"
}
期望

{
    "response_code": "0",
    "message": "Operation is successfully executed",
    "status": "success",
    "data": {
        "id": 1,
        "user_id": 1,
        "date": "12-10-2020",
         other data ....
        "is_active": true,
        "createdAt": "2020-10-21T06:25:57.877Z",
        "updatedAt": "2020-10-21T06:25:57.877Z",
        "report_data": {
            "id": 1,
            "entry_id": 1,
            "Date": null,
            "report_document_id": "2",
            "createdAt": "2020-10-21T06:26:02.642Z",
            "updatedAt": "2020-10-21T06:26:02.642Z"
        }
    },
    "level": "info",
    "timestamp": "2020-10-21T06:25:45.947Z"
}
我已经检查了我的整个项目,没有像
report\u datum
这样的名称,是sequelize.js的bug还是其他方法

API I代码如下所示

getdaily_entryById: async (req, res) => {
    sequelize.sequelize.transaction(async (t1) => {

        if (!req.params.id) {
            logger.warn(error.MANDATORY_FIELDS)
            return res.status(500).send(error.MANDATORY_FIELDS);
        }

        let data = await sequelize.daily_entry.findOne({
            where: { id: req.params.id },
            include: [
                sequelize.report_data
            ]
        });
        let result = error.OK
        result.data = data

        logger.info(result);
        return res.status(200).send(result);

    }).catch(function (err) {
        logger.warn(err)
        console.log(err)
        return res.status(500).send(error.SERVER_ERROR);
    });
}, 
我使用了冻结表名,但名称仍在更改

var db_instance=new Sequelize(config.db.database、config.db.username、config.db.password、{
主机:config.DB.host,
方言:config.DB.dialent,
定义:{
时间戳:对,
冻结表名称:true
},
日志记录:false
});
更新

每日输入表

module.exports = function (sequelize, DataTypes) {

    const daily_entry = sequelize.define('daily_entry ', {
        user_id: {
            type: DataTypes.INTEGER(),
            allowNull: true
        },
        date: {
            type: DataTypes.STRING,
            allowNull: true
        },
        report_status: {
            type: DataTypes.STRING,
            allowNull: true
        },
        high_close: {
            type: DataTypes.DOUBLE(),
            allowNull: true
        },
        high_open: {
            type: DataTypes.DOUBLE(),
            allowNull: true
        },
        low_close: {
            type: DataTypes.DOUBLE(),
            allowNull: true
        },
        low_open: {
            type: DataTypes.DOUBLE(),
            allowNull: true
        },
        is_active: {
            type: DataTypes.BOOLEAN,
            allowNull: true
        }
    });

    return daily_entry 

};
报告数据

 module.exports = function (sequelize, DataTypes) {

    const report_data= sequelize.define('report_data', {
        daily_entry : {
            type: DataTypes.INTEGER(),
            allowNull: true
        },
        Date: {
            type: DataTypes.INTEGER(),
            allowNull: true
        },
        report_document_id: {
            type: DataTypes.TEXT,
            allowNull: true
        }
    },
        {
            tableName: 'report_data'
        });
    return report_data
};

你能试试这个吗!我希望它能解决你的问题

let data = await sequelize.daily_entry.findOne({
            where: { id: req.params.id },
            include: [
                {
                  model:sequelize.report_data,
                  as:'report_data',
                  required:true
                }
            ]
        });

@NikhilPonduri忘了提一件事 您必须将
添加为:'report_data'
在您的
关系中
,然后才能使用下面的代码,它肯定会起作用

  let data = await sequelize.daily_entry.findOne({
        where: { id: req.params.id },
        include: [
            {
              model:sequelize.report_data,
              as:'report_data',
              required:true
            }
        ]
    });

您是否在您的协会中登记了您所提供的名称
报告数据
?。如果您提供数据库模型的代码,那就太好了。是的,我给它起了一个名字report_DataSequalize.js正在转换数据,当数据为单数时,它是复数的SequelizeAgerLoadingError:report_数据使用别名与daily_条目相关联。您已包含别名(报表数据),但它与关联(报表数据)中定义的别名不匹配。是。这是因为当您将模型与不同的名称关联时,以及当您在加入(包括)其他模型时提供不同的名称(as)时。如果我可以查看您的每日数据和报告数据模型模式,那将非常有用@Aryai添加了两个表的模式