gpt4 book ai didi

node.js - Node js-cassandra 不会插入

转载 作者:太空宇宙 更新时间:2023-11-03 23:35:37 25 4
gpt4 key购买 nike

我尝试了很多方法来解决这个问题,但似乎总是会导致一个或另一个错误。

下面是我用来执行 INSERT 查询的代码。

            req.client.execute("INSERT INTO users (id,username,email,password,userFolder) VALUES (now(),'"+newUser.username+"','"+newUser.email+"','"+newUser.password+"',"+newUser.userFolder+");",function(err,result){
if(err){
console.log(err.message)
}else{
console.log("New user created")
}
});

newUser.userFolder 在数组中简单定义为 new Date().getTime()

我尝试过 parseInt(userFolder: new Date().getTime()); 但它似乎总是导致此错误

此外,如果您尝试 Number(userFolder :new Data().getTime()); 它也不起作用并导致下面的第二个错误;

我尝试的另一件事是简单地输入 newUser.userFolder.valueOf() 这也会导致第二个错误。

Invalid STRING constant (1443827057269) for "userfolder" of type int

Unable to make int from '1443827264655'

我有一种感觉,因为 ' 位于导致此问题的数字之前。但是我不确定如何删除它。

我尝试直接输入数字而不使用数组,它工作正常,因此变量一定是导致此问题的原因。

我基本上从 MySQL 迁移到 cassandra,并且该项目有一个截止日期,因此我们将不胜感激。

顺便说一句,我正在使用 Node-js 的 datastax 驱动程序

最佳答案

req.client.execute("INSERT INTO users (id,username,email,password,userFolder) VALUES (now(), :username, :email, :userFolder)", 
newUser,
{prepare: true },
function(err,result) {
if(err){
console.log(err.message)
}else{
console.log("New user created")
}
});

现在一些细节:

  1. 上面的代码不是通过连接值来创建 CQL 字符串,而是创建参数化查询
  2. 查询中的参数是按名称(例如用户名)从newUser对象中检索的。参数名称必须与对象中的属性名称完全相同。

    可以选择使用 ? 代替位置参数,然后您可以在数组中传递它们的值:

    req.client.execute("INSERT INTO users (id,username,email,password,userFolder) VALUES (now(), ?, ?, ?)", 
    [newUser.username, newUser.password, newUser.userFolder], ...
  3. {prepare: true} 告诉客户端准备此语句,因此如果多次使用,它会优化其执行和参数传输

最后但并非最不重要的一点是,请不要明文存储密码。

关于node.js - Node js-cassandra 不会插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32917116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com