Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.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
Javascript Sequelize错误:排序时传递给order/group:Literal的结构未知_Javascript_Node.js_Postgresql_Sequelize.js - Fatal编程技术网

Javascript Sequelize错误:排序时传递给order/group:Literal的结构未知

Javascript Sequelize错误:排序时传递给order/group:Literal的结构未知,javascript,node.js,postgresql,sequelize.js,Javascript,Node.js,Postgresql,Sequelize.js,我正在使用Sequelize v6,无连接或其他任何东西,执行一个相当简单的按查询选择和排序。奇怪的是,它第一次起作用,但第二次不管我用什么方法都失败了。我的意思是,我已经尝试了db.literal方法和简单的顺序:['column','DESC']方法 以下是它工作时第一次输出的内容: Executing (default): SELECT "id", "timeStart", "timeEnd", "nextPage&qu

我正在使用Sequelize v6,无连接或其他任何东西,执行一个相当简单的按查询选择和排序。奇怪的是,它第一次起作用,但第二次不管我用什么方法都失败了。我的意思是,我已经尝试了
db.literal
方法和简单的
顺序:['column','DESC']
方法

以下是它工作时第一次输出的内容:

Executing (default): SELECT "id", "timeStart", "timeEnd", "nextPage", "createdAt", "updatedAt" FROM "ScrapeJobs" AS "ScrapeJob" ORDER BY "ScrapeJob"."createdAt" DESC LIMIT 1;
21
const db=require('./connection.js');
常量模型=需要('./模型/索引');
const ScrapeJob=models.ScrapeJob;
常量app=express();
app.get('/snap',异步函数(req,res){
等待db.authenticate();
常量q=db.literal(“'ScrapeJob”“”createdAt“DESC”“)
常量p=['createdAt','DESC']
让scrapeJobs=等待ScrapeJob.findAll({
订单:[q],
限额:1
})
console.log(scrapeJobs)
返回res.status(200).send('okay dokay')
})
所以这是第一次,每次都有效。但是,当我第二次尝试触发此函数时(通过访问本地URL),如果使用db.literal方法,则会出现以下错误:

Error: Unknown structure passed to order / group: Literal { val: '"ScrapeJob"."createdAt" DESC' }
如果我使用简单的顺序数组:

 Error: Unknown structure passed to order / group: Literal { val: ' DESC' }
我见过GroupBy的相关问题和相关的黑客让它工作,但我觉得这是一个更简单的案例,可能有一个更简单的解决方案?我试着给我的表和模式命名,但没有多大用处,但也许我做错了?以下是我的模型定义文件供参考,没有明确的表名或模式名:

“严格使用”;
常数{
模型
}=需要(“续集”);
module.exports=(sequelize,数据类型)=>{
类扩展模型{
/**
*用于定义关联的助手方法。
*此方法不是Sequelize生命周期的一部分。
*`models/index`文件将自动调用此方法。
*/
静态助理(模型){
//在这里定义关联
}
};
scrapjob.init({
timeStart:DataTypes.DATE,
timeEnd:DataTypes.DATE,
下一页:DataTypes.INTEGER
}, {
续集,
modelName:“scrapjob”
});
返回工作;
};
我也很高兴能找到一个解决方案,将原始SQL与Sequelize结合使用,但它始终让我

SequelizeDatabaseError:关系“ScrapeJobs”不存在

错误。我尝试过引用,而不是引用,在表名前面加上
public.
,但我似乎无法让它进行查询。这是一个如此简单的问题,让我头痛了好几个小时。在这一点上,使用Sequelize真的是事后诸葛亮。有人能给我指出正确的方向吗,不管是修复order子句还是修复我的原始SQL查询?提前感谢。

一半答案:

我的原始SQL查询无法工作的原因是我正在连接到生产数据库,而生产数据库尚未运行迁移。愚蠢的错误。我通过打印
process.env.DB\u HOST
发现了这一点,我将其硬编码为生产数据库

但是,即使在进行迁移并连接到正确的数据库之后,我仍然会在进行查询时持续得到传递给order/group:Literal{val:'DESC'}的
错误:未知结构
错误:

let scrapeJobs=wait ScrapeJob.findAll({
订单:['createdAt','DESC']],
限额:1
})
我可以继续我的工作,我想只要我使用Sequelize,我就会继续使用原始SQL,但是如果有人对剩余的错误有任何见解,我仍然会非常感激。

一半答案:

我的原始SQL查询无法工作的原因是我正在连接到生产数据库,而生产数据库尚未运行迁移。愚蠢的错误。我通过打印
process.env.DB\u HOST
发现了这一点,我将其硬编码为生产数据库

但是,即使在进行迁移并连接到正确的数据库之后,我仍然会在进行查询时持续得到传递给order/group:Literal{val:'DESC'}的
错误:未知结构
错误:

let scrapeJobs=wait ScrapeJob.findAll({
订单:['createdAt','DESC']],
限额:1
})

我可以继续我的工作,我想我会继续使用原始SQL,只要我使用Sequelize,但是如果有人对剩余的错误有任何见解,我仍然会非常感激。

即使我遇到了这个错误,但是如果我重新启动服务器,它仍然可以工作。所以有时候它会随机停止工作并抛出这个错误。你能告诉我你用什么方法使它工作吗?嘿,所以我没有得到
order
选项使
findAll
findOne
工作一致。我选择使用类似以下查询的原始SQL来获得相同的结果:
js const db=require('./connection.js');让[scrapeJobs,metadata]=wait db.query('SELECT*FROM“scrapeJobs”ORDER BY“createdAt”DESC')
即使我收到这个错误,但是如果我重新启动服务器,它也会工作。所以有时候它会随机停止工作并抛出这个错误。你能告诉我你用什么方法使它工作吗?嘿,所以我没有得到
order
选项使
findAll
findOne
工作一致。我选择使用类似以下查询的原始SQL来获得相同的结果:
js const db=require('./connection.js');让[scrapeJobs,metadata]=wait db.query('SELECT*FROM“scrapeJobs”ORDER BY“createdAt”DESC')
您有没有进一步了解这个问题?我在一个模型上做一个简单的订货时也有同样的错误,似乎无法回避这个问题。该查询在第一次运行时就开始工作,然后在所有后续调用中都失败。我还通过直接调用SQL成功地解决了这个问题,但这已经开始使使用sequelize变得毫无意义了…@Peter,恐怕不行。是的,我在考虑包裹