Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.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

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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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 使用';其中';和';包括';同时声明_Node.js_Postgresql_Sequelize.js - Fatal编程技术网

Node.js 使用';其中';和';包括';同时声明

Node.js 使用';其中';和';包括';同时声明,node.js,postgresql,sequelize.js,Node.js,Postgresql,Sequelize.js,我已经设法让include语句使用外键,但是当我尝试向findAll语句添加where语句时,我得到了以下错误。我已经检查了我的外键和型号无数次,我看不出它们有任何问题 以下API中的语法是否正确?密钥中的数据很重要,因此我不想在解决方法上花费更多时间。我见过其他例子,其中一个include键中有where语句,但我想要拉取的字段在主表上,所以我认为情况不同 未处理的拒绝错误:包括意外的拒绝。元素必须是模型、关联或对象 原料药 更新 错误消息 { "message":

我已经设法让include语句使用外键,但是当我尝试向findAll语句添加where语句时,我得到了以下错误。我已经检查了我的外键和型号无数次,我看不出它们有任何问题

以下API中的语法是否正确?密钥中的数据很重要,因此我不想在解决方法上花费更多时间。我见过其他例子,其中一个include键中有where语句,但我想要拉取的字段在主表上,所以我认为情况不同

未处理的拒绝错误:包括意外的拒绝。元素必须是模型、关联或对象

原料药

更新

错误消息

{
    "message": "missing FROM-clause entry for table \"diveLog\""
}
带有原始SQL的控制器API

exports.schoolDiveLogApproval = async (req, res) => {

    try {
        const schoolID = req.params.schoolID;
        const { QueryTypes } = require('sequelize');
        await diveLog.sequelize.query(
            'SELECT * '+
            'FROM "diveLogs" '+
            'LEFT OUTER JOIN "diveTypes" AS "diveTypeID_FK2" ON "diveLogs"."diveTypeID" = "diveTypeID_FK2"."diveTypeID" ' +
            'LEFT OUTER JOIN "diveSchools" AS "diveSchoolID_FK" ON "diveLog"."diveSchoolID" = "diveSchoolID_FK"."diveSchoolID" ' +
            'LEFT OUTER JOIN "currents" AS "currentID_FK" ON "diveLog"."currentID" = "currentID_FK"."currentID" ' +
            'LEFT OUTER JOIN "visibilities" AS "visibilityID_FK" ON "diveLog"."visibilityID" = "visibilityID_FK"."visibilityID" ' +
            'LEFT OUTER JOIN "userLogins" AS "userID_FK" ON "diveLog"."userID" = "userID_FK1"."userID" ' +
            'LEFT OUTER JOIN "diveSpots" AS "diveSpotID_FK2" ON "diveLog"."diveSpotID" = "diveSpotFK2"."diveSpotID" ' +
            'WHERE "diveLogs"."diveSchoolID" = ? ' +
            'AND "diveLogs"."diveVerifiedBySchool" = ?',
            {
                replacements: [schoolID, false],
                type: QueryTypes.SELECT
            }
        )
根据pgAdmin数据库,所有的表名和列名看起来都是正确的,所以除了语法之外,我看不出问题出在哪里


我已经偏离了在IDE终端中执行SQL的方式,因此理论上应该执行SQL。这更可能与我传递id的方式有关吗?

好吧,我真的尝试了几分钟来讨论这个续集,但我真的建议您学习和使用原始SQL,它的方式更简单、更通用

在尝试设置和理解这个sqlize的半个小时后,看到了这么多奇怪的问题,比如:

选择id等不存在的列,在表“user_infoS(?)的名称中添加一个“s”。。所以我放弃了,提出了一个可能对你有帮助的问题,如果我正确理解你的问题的话

如果你发送正确的模式,我可以帮助你进一步,但是的,对不起,我不能在这个续集花更多的时间,这件事是可怕的

const { QueryTypes } = require('sequelize');
await sequelize.query(
  'SELECT *'+ 
  'FROM diveLog l'+
  'JOIN diveType t ON l.diveTypeId = t.id'+
  'JOIN diveSchool s ON l.diveSchoolId = s.id'+
  'JOIN current c ON l.currentId = c.id'+
  'JOIN visibility v ON l.visibilityId = v.id'+
  'JOIN user u ON l.userId = u.id'+
  'JOIN diveSpot sp ON l.diveSpotId = sp.id'+
  'WHERE diveSchoolID = ?'+
    'AND diveVerifiedBySchool = ?',
  {
    replacements: [schoolID, false],
    type: QueryTypes.SELECT
  }
);

好吧,我真的试过几分钟来讨论这个续集,但我真的建议您学习和使用原始SQL,它的方式比这更简单、更通用

在尝试设置和理解这个sqlize的半个小时后,看到了这么多奇怪的问题,比如:

选择id等不存在的列,在表“user_infoS(?)的名称中添加一个“s”。。所以我放弃了,提出了一个可能对你有帮助的问题,如果我正确理解你的问题的话

如果你发送正确的模式,我可以帮助你进一步,但是的,对不起,我不能在这个续集花更多的时间,这件事是可怕的

const { QueryTypes } = require('sequelize');
await sequelize.query(
  'SELECT *'+ 
  'FROM diveLog l'+
  'JOIN diveType t ON l.diveTypeId = t.id'+
  'JOIN diveSchool s ON l.diveSchoolId = s.id'+
  'JOIN current c ON l.currentId = c.id'+
  'JOIN visibility v ON l.visibilityId = v.id'+
  'JOIN user u ON l.userId = u.id'+
  'JOIN diveSpot sp ON l.diveSpotId = sp.id'+
  'WHERE diveSchoolID = ?'+
    'AND diveVerifiedBySchool = ?',
  {
    replacements: [schoolID, false],
    type: QueryTypes.SELECT
  }
);

关于API中的第一个错误,请确保您需要以下模型:

const { diveLog, diveType, diveSchool, diveSchool, current, visibility, user, diveSpot } = require('../models');
第二条错误消息:

{ “消息”:“关系”divelogs“不存在” }


指示在数据库中找不到表“divelogs”,请仔细检查该表是否存在,如果不存在,请运行迁移以创建该表。请注意,如果启用Sequelize,将自动使您的表名为复数。如果您定义了一个名为User的模型,Sequelize将创建一个表作为Users

关于API中的第一个错误,请确保您需要如下所示的模型:

const { diveLog, diveType, diveSchool, diveSchool, current, visibility, user, diveSpot } = require('../models');
第二条错误消息:

{ “消息”:“关系”divelogs“不存在” }


指示在数据库中找不到表“divelogs”,请仔细检查该表是否存在,如果不存在,请运行迁移以创建该表。请注意,如果启用Sequelize,将自动使您的表名为复数。如果您定义了一个名为User的模型,Sequelize将创建一个名为Users

的表。第二个错误:您有时使用“devLogS”,有时使用“devLoG”(单数)在别名上输入错误


在这里询问之前,请尝试更多,我们不会为您完成工作。

第二个错误:您有时使用“devLogS”,有时使用“devLoG”(单数形式)在别名上输入错误


在这里询问之前,请尝试更多,我们不会为您做任何工作。

当我重新使用原始的Sequelize和include/where子句时,我从API中删除了[Op and],然后在文件顶部重新声明了每个模型,并且成功了

exports.schoolDiveLogApproval = async (req, res) => {

    try {
        const schoolID = req.params.schoolID;
        diveLog.findAll({
            include: [{
                model: diveType, as: 'diveTypeID_FK2',
            }, {
                model: diveSchool, as: 'diveSchoolID_FK',
            }, {
                model: current, as: 'currentID_FK',
            }, {
                model: visibility, as: 'visibilityID_FK',
            }, {
                model: user, as: 'userID_FK1',
            }, {
                model: diveSpot, as: 'diveSpotID_FK2'
            }],
            where: [{
                    diveSchoolID: req.params.schoolID,
                    diveVerifiedBySchool: false
            }],
        })
            .then((diveLog) => {
                const schoolDiveLogList = [];
                for (i = 0; i < diveLog.length; i++) {
exports.schoolDiveLogApproval=async(req,res)=>{ 试一试{ const schoolID=req.params.schoolID; 迪维洛格·芬德尔({ 包括:[{ 型号:diveType,as:'diveTypeID_FK2', }, { 型号:DevSchool,如:“DevSchool_FK”, }, { 型号:current,as:'currentID_FK', }, { 模型:可见性,如:“visibilityID_FK”, }, { 型号:user,as:'userID_FK1', }, { 型号:DevSpot,as:'DevSpotId_FK2' }], 其中:[{ DevChoolid:req.params.schoolID, 按学校划分:false }], }) .然后((diveLog)=>{ const schoolDiveLogList=[]; 对于(i=0;i当我重新使用原始的Sequelize和include/where子句时,我从API中删除了[Op and],然后在文件顶部重新声明了每个模型,它就工作了

exports.schoolDiveLogApproval = async (req, res) => {

    try {
        const schoolID = req.params.schoolID;
        diveLog.findAll({
            include: [{
                model: diveType, as: 'diveTypeID_FK2',
            }, {
                model: diveSchool, as: 'diveSchoolID_FK',
            }, {
                model: current, as: 'currentID_FK',
            }, {
                model: visibility, as: 'visibilityID_FK',
            }, {
                model: user, as: 'userID_FK1',
            }, {
                model: diveSpot, as: 'diveSpotID_FK2'
            }],
            where: [{
                    diveSchoolID: req.params.schoolID,
                    diveVerifiedBySchool: false
            }],
        })
            .then((diveLog) => {
                const schoolDiveLogList = [];
                for (i = 0; i < diveLog.length; i++) {
exports.schoolsidelogapproval=异步(req,res)=>{
试一试{
const schoolID=req.params.schoolID;
迪维洛格·芬德尔({
包括:[{
型号:diveType,as:'diveTypeID_FK2',
}, {
型号:DevSchool,如:“DevSchool_FK”,
}, {
型号:current,as:'currentID_FK',
}, {
模型:可见性,如:“visibilityID_FK”,
}, {
型号:user,as:'userID_FK1',
}, {
型号:DevSpot,as:'DevSpotId_FK2'
}],
其中:[{
DevChoolid:req.params.schoolID,
按学校划分:fals