Node.js nodejs cassandra不会插入整数
我尝试了很多方法来修复这个问题,但它似乎总是导致这样或那样的错误 下面是我用来执行INSERT查询的代码Node.js nodejs cassandra不会插入整数,node.js,cassandra,cassandra-cli,Node.js,Cassandra,Cassandra Cli,我尝试了很多方法来修复这个问题,但它似乎总是导致这样或那样的错误 下面是我用来执行INSERT查询的代码 req.client.execute("INSERT INTO users (id,username,email,password,userFolder) VALUES (now(),'"+newUser.username+"','"+newUser.email+"','"+newUser.password+"',"+newUser.userFolder+");",f
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在数组中定义为newdate().getTime()
我试过做parseInt(userFolder:newdate().getTime())代码>但它似乎总是导致此错误
如果您尝试Number(userFolder:newdata().getTime())代码>它也不工作,并导致下面的第二个错误
我尝试的另一件事是简单地键入newUser.userFolder.valueOf()
,这也会导致第二个错误
Invalid STRING constant (1443827057269) for "userfolder" of type int
或
我有一种感觉,因为“是”之前的数字是造成这一点的原因。然而,我不知道如何删除这个
我尝试直接键入数字而不使用数组,它工作正常,因此变量一定是导致此问题的原因
我基本上是从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")
}
});
下面是一些细节:
上面的代码不是通过连接值来创建CQL字符串,而是创建一个参数化查询
查询中的参数按名称(例如,username
)从newUser
对象中检索。参数的名称必须与对象中属性的名称完全相同
可以选择使用?
代替位置参数,然后可以在数组中传递它们的值:
req.client.execute("INSERT INTO users (id,username,email,password,userFolder) VALUES (now(), ?, ?, ?)",
[newUser.username, newUser.password, newUser.userFolder], ...
{prepare:true}
告诉客户机准备此语句,因此如果多次使用,它将优化其执行和参数传输
最后但并非最不重要的一点是,请不要将密码存储在clear中
req.client.execute("INSERT INTO users (id,username,email,password,userFolder) VALUES (now(), ?, ?, ?)",
[newUser.username, newUser.password, newUser.userFolder], ...