Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >序列化与WHERE IN的关系("ARRAY")

序列化与WHERE IN的关系("ARRAY")
EN

Stack Overflow用户
提问于 2017-03-10 13:38:59
回答 2查看 29.9K关注 0票数 9

是否可以在sequelize中定义关系,其中多个外键作为一个数组存储在一个字段中。基本上是一个belongsToMany,而不是关系表,所有的ids都存储在一个字段中,用逗号分隔。查询将使用WHERE IN('1,5,7')

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-10 13:51:46

您可以做到这一点,但绝对没有外键约束-没有存储外键数组的可能性。但是,您可以创建一个列,该列将是表示关联表的ID的整数数组。然后,您只需要创建一些instanceMethods来检索和设置数组值(请记住,ARRAY类型只在PostgreSQL中可用)。

我不推荐这种解决方案,因为它不能确保数据一致性。让我们考虑一个示例-用户属于id为1、2和4的多个类别。如果您删除其中一个类别,则需要记住手动从user的categories数组中删除此id(使用某个hook或其他工具),否则此用户仍将被分配到一个不再存在的类别。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const User = sequelize.define('User', {
    categories: DataTypes.ARRAY(DataTypes.INTEGER)
}, {
    instanceMethods: {
        getCategories: function(){
            return Category.findAll({
                where: {
                    id: { $in: this.get('categories') }
                }
            }).then(categories => {
                // if user's categories was [1, 2, 4]
                // it would return categories with id=1, id=2 and id=4
                return categories;
            });
        },
        setCategories: function(ids){
            return this.setDataValues('categories', ids).save().then(self => {
                return self;
            });
        }
    }
});
票数 11
EN

Stack Overflow用户

发布于 2019-02-07 07:33:14

使用**Op.in**代码在数组中查找结果,以获取给定数组的带有where条件的序列化查询结果

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var Sequelize = require('sequelize');
var Op = Sequelize.Op;
var arrayofTaskId = ['123', '456', '789'];
Tasks.findAll({
  where: {
    task_id: {
      [Op.in]: arrayofTaskId
    }
  }
}).then(function(result) {
  return res.json(result)
});
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42719750

复制
相关文章
where in与join 查询
Oracle:当前所用版本中,限制in中的参数不能超过 1000个。当超出时会被报错"ORA-01795异常(where in超过1000)的解决"。
WindCoder
2018/09/19
1.9K0
将Array、Dictionary等集合类的序列化和反序列化
Objective-C的集合类序列化到文件中或者从文件中反序列化其实很简单,请看下面的示例代码:
EltonZheng
2021/01/26
4340
事务的隔离和序列化的关系?
马克-to-win:看 完前一段实际案例,你又会说了,事务的隔离就是序列化呀。回答:事务的隔离不等同于序列化。最狠的隔离级别才是序列化,在这种隔离级别中,我的事务即使很 普通的select * from table,你的事务都无法同时再改变表了。马克-to-win:你的任何修改表的企图都会被挡住(block),直到我完成我的事务(即使我的事务就一句select * from table),你的修改表的语句才能执行。这样就保证了我在查看表时不会被你的任何修改所影响,看到脏读,幻读等。最不狠的隔离级别甚至可以同时看到别人 的uncommited的数据。
马克java社区
2021/08/03
5470
php中array_merge与array相加的区别
一.array_merge 1. 数组键值为字串的情况(hash数组) 键名相同的情况下,后出现的元素覆盖先出现的。 示例 <?php $ary1 = array('name'=>'test', 'a
跑马溜溜的球
2020/12/07
9070
left join on and 与 left join on where的区别
数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。
wuweixiang
2018/08/14
1.2K0
sql语句中where与having的区别
Where 是一个约束声明,使用Where约束来自数据库的数据,Where是在结果返回之前起作用的,Where中不能使用聚合函数。 Having是一个过滤声明,是在查询返回结果集以后对查询结果进行的过滤操作,在Having中可以使用聚合函数。 在查询过程中聚合语句(sum,min,max,avg,count)要比having子句优先执行。而where子句在查询过程中执行优先级高于聚合语句。 下面用一个例子进一步说明问题。假设有数据表:
跑马溜溜的球
2020/12/07
1.6K0
js unit8array和java变量之间的关系
最近一个项目遇到了一个二维码转换的问题,厂家给的demo只有js的转换方式,其中用到了Unit8,由于实际应用场景,转换应该由后端java代码进行实现,这里记录一下实现方式。
全栈程序员站长
2022/11/04
1.2K0
Java 的序列化 与 反序列化
我们进行网络传输的时候,是以 二进制数据为单位的。我们在传输的时候 就需要将对象 进行序列化 为字节,这样 我们就可也 进行传输了。比如我们存储Redis数据,假设我们有个 对象叫user,但是 Redis 可识别不了我们Java 虚拟机内存中的 user对象。Redis 只认识 String。将来存储的形式 ,也一定是String。但是 这就带来一个问题。我们将来从Redis读取的字节时候,我们就需要转成Java 对象,我们才能用Java代码进行处理,所以,我们必须按照一个规矩 将对象 进行 所谓的 “加密” 然后 存储后。我们读取的时候 再 “解密“。 “加密” 就叫 序列化 ,”解密” 就叫 反序列化。
收心
2022/01/17
5550
group by 与 where, having以及顺序
1. GROUP BY子句必须出现在WHERE子句之后,ORDER BY子句之前. HAVING语句必须在ORDER BY子句之后。(where先执行,再groupby分组;groupby先分组,having在执行。)
全栈程序员站长
2022/09/01
2.8K0
group by 与 where, having以及顺序
Java的序列化与反序列化
Java的序列化与反序列化是Java中比较重要的一个知识,本文将总结一下,怎么使用序列化功能以及经常遇到的一些问题的解答.
呼延十
2019/07/01
6180
对象的序列化与反序列化
对象的序列化就是将Object转换成byte序列,反之叫做对象的反序列化 1.序列化流: ObjectOutputStream,是过滤流----->writeObject 反序列化流: ObjectInputStream ------->readObject 2.序列化接口: Serializable 对象必须实现序列化接口,才能进行序列化,否则将会出现异常 这个接口没有任何方法,只是一个标准 3.一个类实现了序列化接口,子类也就都能进行序列化了 java.io 接口 Serializable publ
拾点阳光
2018/05/11
1.1K0
nodejs 的序列化与反序列化
1.序列化 stringify函数的作用就是序列化对象,也就是说将对象类型转换成一个字符串类型(默认的分割符("&")和分配符("=")),先介绍它的基本用法,在下一节里我们将学习如何替换默认分配符,下面我们就通过以下例子来清楚的认识一下吧! 例1:querystring.stringify("对象") var querystring= require('querystring'); var result = querystring.stringify({foo:'bar',cool:['xux', 'yy
hbbliyong
2018/03/06
1.6K0
array_intersect_assoc 与array_intersect区别
array_intersect_assoc() 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意和 array_intersect() 不同的是键名也用于比较。
全栈程序员站长
2022/07/08
4470
array_intersect_assoc 与array_intersect区别
go 语言的序列化与反序列化
与c 语言一样, 在网络编程中, go语言同样需要进行序列化与反序列化 在c语言中, 通常需要一块内存缓冲区用来收 发数据。缓冲区一般定义成char *buff类型。 当需要发送 数据时, 直接使用memcpy函数 ,将要发送的数据拷贝到buff末尾。 如果发送的数据是一个特定的结构体,首先要进行大小端转换; 如果数据是一段字符串,那么直接拷贝过去就行了 而在go 语言中, socket收发函数的原型如下: conn.Read(buff []byte) conn.Write(buff []byte) 其中c
2018/04/16
1.3K0
序列化与反序列化
序列化(pickling)   把变量从内存中变成可存储或传输的过程 反序列化(unpickling)   把变量内容从序列化的对象重新读到内存里的过程
py3study
2020/01/17
7410
DotNet的JSON序列化与反序列化
    JSON(JavaScript Object Notation)JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。在现在的通信中,较多的采用JSON数据格
彭泽0902
2018/01/04
1.1K0
序列化与反序列化
现今的后台服务大多是微服务架构,每个服务按照业务进行拆分,实现了服务之间的解耦,而服务之间要记性接口调用实现,服务支架要进行数据对象共享,就要把服务对象转成二进制流,通过网路传输,传送到对方服务,在把二进制流转成对象这就是是序列化,反序列化。
小土豆Yuki
2020/06/15
1.6K0
Java中List与Array的转换
    在Java项目开发过程中,集合之间的互相转换是非常常见的,其中两个比较典型的转换是List和Array之间的转换,本文主要介绍这二者之间的转换、其中存在的一些问题以及解决方案,本文JDK版本为1.8。
Tyan
2022/05/09
4450
神奇的 SQL 之 WHERE 条件的提取与应用
  一条 SQL 在数据库中是如何执行的呢 ?相信很多人都会对这个问题比较感兴趣。但是,感兴趣归感兴趣,你得去追呀,还臆想着她主动到你怀里来 ?
青石路
2020/02/25
1.9K0
神奇的 SQL 之 WHERE 条件的提取与应用
点击加载更多

相似问题

WHERE IN ($array) AND $array =?

20

Laravel: where语句与关系

245

与where子句的雄辩关系

12

Laravel与附加where语句的关系

12

基于与Laravel关系的where应用

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文