- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
假设这个模式:
var user = sequelize.define('user', {
username: Sequelize.STRING,
email: Sequelize.STRING,
password: Sequelize.STRING
}, {
timestamps: true,
createdAt: 'created_at',
updatedAt: 'updated_at'
});
var status = sequelize.define('status', {
status: Sequelize.STRING,
description: Sequelize.TEXT
}, {
timestamps: true,
createdAt: 'created_at',
updatedAt: 'updated_at'
});
var users_statuses = sequelize.define('users_statuses', {
user_id: Sequelize.INTEGER(11),
status_id: Sequelize.INTEGER(11),
}, {
timestamps: true,
createdAt: 'created_at',
updatedAt: 'updated_at'
});
user.hasMany(status, { foreignKey: 'user_id', through: models.users_statuses });
status.hasMany(user, { foreignKey: 'status_id', through: models.users_statuses });
因此每个用户都有许多状态(以跟踪所有选定的状态)。使用 find 和 include 或 getter user.getStatuses() 我可以获取实际用户的所有状态,但我无法弄清楚如何获取最后/当前的关联状态(基于 users_statuses 表/模型的created_at 列)
有什么想法吗?
最佳答案
使用 1 个数据库查询进行快速修复。使用
user.find({
where: {user_id : id },
include: [{
model: status,
attributes: ['status']
}],
order: [ [ status, 'createdAt', 'DESC'] ]
}).then(function(user) {
var latestStatus = user.status[0];
}).catch(function(err) {
console.log(err);
});
但这会浪费时间来获取您不需要的所有状态。如果您有很多状态,Sequelize 可能会比执行其他查询浪费更多时间来截断结果。
更好的方法是在 user_status
表中搜索最新的 createdAt
状态,并对 status
表执行另一个查询:
user_status.find({
where: {user_id: yourid}
order: [ 'createdAt', 'DESC']
}).then(function(user_status) {
var latest_status_id = user_status.status_id;
return status.find(where:{status_id: latest_status_id});
}).then..... catch....;
当然有最好的办法。但这需要您将表与其交叉表关联起来,并且不能让sequelize 使用“through”来执行此操作。
如果您的 user_status 是强实体,并且它具有以下关系:
user_status.belongsTo(status, {foreignKey: status_id});
然后你可以这样做:
user_status.find({
where: {user_id: id},
include: [{
model: status
}],
order: [ [ 'createdAt', 'DESC' ] ]
}).then....
基本思想是“包含”只能用于强实体。当您使用 hasMany... through...
时,交叉表是一个弱实体,无法“包含”。
关于node.js - Sequelize 关联 : query the last createdAt association from many to many association,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26785823/
如何获取每个用户名的第一行 createdAt? 例如:后端看起来像这样 objectId- username - photo - createdAt 5135Aer - name
我正在使用 Mongoose 创建一个 NestJs 应用程序,我目前在尝试访问 createdAt 时遇到问题,即使我已将时间戳设置为 true,我的代码如下。 product.schema.ts
我想在一系列开始和结束日期之间进行 Sequelize 查询,但它似乎不起作用。我试过在两者之间使用,但它似乎也不起作用。在 sequelize 上实现这一点的正确方法是什么?下面的查询有什么问题?谢
有人可以帮助我我在使用 sequelize 在数据库中插入记录时遇到问题,created_at 和 updated_at 会自动填充,并且出现以下错误: "name": "SequelizeValid
我正在尝试使用 Sequelize 获取一些小计,这就是我的查询的样子。 const getAllCustomerEarnings = async (customerAccountId) => {
我查询存储在 parse.com 上的消息 let query = PFQuery(className: "Messages") query.whereKey("sender", equalT
我的 Post Controller 上有一个 getPosts Controller ,我的目标是按 createdAt 时间对它进行排序以保持顺序,因为当我将它映射到前端时,它是从最后创建的开始到
我似乎无法修改 createdAt 和 updatedAt 的结果。 结果是 2018-06-08T04:40:18.596Z 当我在 html 中呈现它时:创建于 2018 年 6 月 8 日星期五
var mongoose = require("mongoose"); var articleSchema = new mongoose.Schema({ Title : String,
我以前没有发生过这种情况,但我只是注意到我所有的虚拟 fixture 信息(帖子)都比实际时间提前一小时显示了 createdAt 时间? 当我手动输入帖子时,时间是正确的。 知道是什么原因造成的吗?
我从 Parse 中检索了 createdAt 列,并在 UITableview 上为每一行写了它,但是时间和日期在 tableview 上看起来像这样: 23-12-2015 01:04:56.38
我使用 sequelize 创建了一个带有时间戳的表。当我更新表时,它会自动更新时间戳(即 createdAt 和 updatedAt)。但这些时间与我的本地时间不同。如果我使用 moment 像这样
我需要按对象创建日期对 Algolia 数据库进行排序。由于某种原因,Algolia 在创建对象时仅显示“createdAt”日期。这里有什么建议吗? 最佳答案 几个指针: 要对结果进行排序,请使用:
我一直在经历 this tutorial和 github repository用于使用 Postgres 数据库创建 express/passport/sequelize 授权。我知道问题出在哪里,我
我正在 mariadb/mysql 引擎中运行以下查询。 如果不存在则创建表引用(idINTEGER NOT NULL auto_increment ,引用TEXT,作者VARCHAR(255),流派
我刚刚在 Parse.com 中创建了一个用户,createdAt 属性实际上比该对象的实际创建时间提前 7 小时。正在创建的任何对象都会发生这种情况。我怎样才能在 Parse 中解决这个问题? cr
我正在尝试从 sendbird 消息中获取字符串格式的消息发送日期,但不知道如何反序列化消息。 目前我得到的是一堆乱七八糟的数字,如下所示: 1506267806611 我目前将序列化日期存储在下面的
我正在使用sequelize 5.6.1从Nodejs 10.15服务器上的verifLog模型检索记录: hit = await VerifLog.findOne({where : {vcode:
如何从 ParseObject 的 createdAt 列获取日期并将其转换为 DD- 中的 String MM-YYYY 格式? 最佳答案 您需要像这样从 Parse 中获取日期: Date dat
我被困在那个问题上。我已经阅读了 Parse 文档 ( https://parse.com/docs/ios/guide#queries-query-constraints ),但它对我帮助不大。 错
我是一名优秀的程序员,十分优秀!