Javascript 续集findOne最新条目
我需要在表中查找最新条目。最好的方法是什么?该表具有Sequelize的默认Javascript 续集findOne最新条目,javascript,node.js,sequelize.js,Javascript,Node.js,Sequelize.js,我需要在表中查找最新条目。最好的方法是什么?该表具有Sequelize的默认createdAt字段。方法findOne是findAll方法的包装器。因此,您可以简单地使用限制为1的findAll,并按id降序 例如: YourModel.findAll({ limit: 1, where: { //your where conditions, or without them if you need ANY entry }, order: [ [ 'createdAt',
createdAt
字段。方法findOne
是findAll
方法的包装器。因此,您可以简单地使用限制为1的findAll
,并按id降序
例如:
YourModel.findAll({
limit: 1,
where: {
//your where conditions, or without them if you need ANY entry
},
order: [ [ 'createdAt', 'DESC' ]]
}).then(function(entries){
//only difference is that you get users list limited to 1
//entries[0]
});
我想你是指第6行的
createdAt
,而不是id
。提交编辑:通常id是自动递增的。因此,id的最大值表示最后添加的条目。是的,你可以使用createdAt
。如果你确定你更喜欢createdAt,我会接受你的编辑。然后呢findOne
返回一个对象,findAll
返回一个数组!这是一个巨大的差异@NicHartley,是的,如果假设id和createdAt都已被索引,我同意你的看法,当然createdAt更清晰,但正如我之前所说,createdAt通常是一个未被索引的审计字段,在数据库中添加新索引与重用主键之间存在一个权衡选择,总之,只维护一个不会降低插入/删除性能并节省磁盘空间的索引,只是想解释一下,根据情况,一个选项可能比另一个更好;您的代码可能是正确的,但如果有一些上下文,它将是一个更好的答案;例如,您可以解释提议的更改如何以及为什么会解决提问者的问题,可能包括相关文档的链接。这将使它对他们更有用,对其他正在寻找类似问题解决方案的网站读者也更有用。简单的问题。答案很简单。你不需要更多了。我自己也在寻找答案,而这些信息正是我一直在寻找的。在信息太多的混乱中,往往越少越好。@syzm当您的方法只返回一个结果时,为什么会有人对结果排序?如果您没有密钥怎么办?在大多数情况下,我们无法访问最新条目的密钥。我还认为这是一个比原始帖子更好的答案,因为它使用了正确的Sequelize方法,需要更少的参数,并且不需要从数组中展开。我还认为@VinceBowdren请求更多上下文是无效的,因为原始问题中没有上下文可以解释。要在不知道密钥的情况下查找最新条目,只需完全省略where
参数
model.findOne({
where: { key },
order: [ [ 'createdAt', 'DESC' ]],
});