我已经尝试了很多东西来解决这个问题,但似乎总会导致一个或另一个错误。
下面是我用来执行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的数据传输驱动程序
答案 0 :(得分:2)
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")
}
});
现在有点细节:
查询中的参数按名称(例如username
)从newUser
对象中检索。参数的名称必须与对象中属性的名称完全相同。
有一个选项可以使用?
代替位置参数,然后你可以在数组中传递它们的值:
req.client.execute("INSERT INTO users (id,username,email,password,userFolder) VALUES (now(), ?, ?, ?)",
[newUser.username, newUser.password, newUser.userFolder], ...
{prepare: true}
告诉客户准备此语句,如果它多次使用,则会优化其执行和参数传输
最后但并非最不重要的是,请不要将密码存储清楚。