比较Node.js中的两个UUID

比较Node.js中的两个UUID,node.js,cassandra,comparison,uuid,Node.js,Cassandra,Comparison,Uuid,我有一个问题,我在网上的研究中找不到任何答案。我在Node.js和Cassandra中开发一个web应用程序。我目前正在开发一个通知系统,我必须比较两个UUID,以确保我不会向执行原始操作(引发通知)的人发送通知 问题是,当我比较两个应该相等的UUID时,我总是得到一个错误的值 下面是我目前正在处理的代码示例: console.log('user_id :', user_id.user_id); console.log("user id of the current user :", this.

我有一个问题,我在网上的研究中找不到任何答案。我在Node.js和Cassandra中开发一个web应用程序。我目前正在开发一个通知系统,我必须比较两个UUID,以确保我不会向执行原始操作(引发通知)的人发送通知

问题是,当我比较两个应该相等的UUID时,我总是得到一个错误的值

下面是我目前正在处理的代码示例:

console.log('user_id :', user_id.user_id);
console.log("user id of the current user :", this.user_id);

console.log(user_id.user_id == this.user_id);
console.log(user_id.user_id === this.user_id);
以下是结果的显示:

user_id : Uuid: 29f1227d-58dd-4ddb-b0fa-19b7fc02fbe8
user id of the current user : Uuid: 29f1227d-58dd-4ddb-b0fa-19b7fc02fbe8
false
false
user_id : Uuid: c8f9c196-2d63-4cf0-b388-f11bfb1a476b
user id of the current user : Uuid: 29f1227d-58dd-4ddb-b0fa-19b7fc02fbe8
false
false
如您所见,第一个UUID应该是相同的。它们是由nodejs cassandra驱动程序中的uuid库生成的。 我不明白为什么当我能够用指定的uuid对我的Cassandra数据库发出任何请求时,我不能比较它们


如果有人能帮助我,那将是极大的荣幸

看起来您的用户id实际上是一个“包含”Uuid的对象,而不是Uuid本身。用户id对象不同,但它们包含相同的数据

尝试直接比较Uuid,如:

console.log(user_id.user_id.Uuid == this.user_id.Uuid);
console.log(user_id.user_id.Uuid === this.user_id.Uuid);

内容相同,但其地址不应相同。
如果您的comparison返回false,则可能是因为您的变量是对象类型。

如前所述,内容相同,但地址不同,因此比较返回false

cassandra驱动程序的UUID对象提供了一个equals函数,用于比较UUID内容的原始十六进制字符串,可用于:

> var uuid1 = uuid.fromString('29f1227d-58dd-4ddb-b0fa-19b7fc02fbe8')
> var uuid2 = uuid.fromString('29f1227d-58dd-4ddb-b0fa-19b7fc02fbe8')
> uuid1 == uuid2
false
> uuid1 === uuid2
false
> uuid1.equals(uuid2)
true

我做了一些类似的事情,它是有效的:

// assuming there are 2 uuids, uuidOne uuidTwo  
uuidOne.toString() === uuidTwo.toString()

什么是用户id的
类型。用户id
和此用户id的
类型
?我打赌它们是(不同的)对象而不是字符串。原因是id在输出中以
Uuid:
作为前缀,这可能来自对象的
toString()
实现。实际上,user\u id和this.user\u id都是不同的对象,这就是为什么简单的===不足以比较它们的原因。非常感谢,我从cassandra驱动程序的UUID对象中不知道equals方法。事实上,如果我将它们与此方法进行比较,它将返回预期的结果。正如您所说,它们都是对象,这是事实,这就是为什么我无法将它们与简单的“==”进行比较的原因。“user\u id”和“this.user\u id”的显示方式是这样的,因为它们都是对象。因此,即使它显示“Uuid:value”,它也只是一个显示,Uuid不是对象的属性,因此“user\u id.user\u id.Uuid”和“this.user\u id.Uuid”返回“undefined”。