2015-10-02 21 views
1

我試了很多東西來解決這個問題,但它總是會導致一個或另一個錯誤。nodejs-cassandra不會插入整數

下面是我用來執行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遷移到卡桑德拉,並有一個這個項目的最後期限,所以任何幫助,將不勝感激。使用節點JS

回答

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") 
        } 
    }); 

現在有點細節datastax司機

順便說IM:

  1. ,而不是創建通過連接值的CQL串,上面的代碼創建了一個參數查詢
  2. 查詢中的參數是通過newUser對象的名稱(例如username)檢索的。參數的名稱必須與對象中的屬性完全相同。

    還有就是用?,而不是用於位置參數的選項,然後你可以把它們的值的數組:

    req.client.execute("INSERT INTO users (id,username,email,password,userFolder) VALUES (now(), ?, ?, ?)", 
          [newUser.username, newUser.password, newUser.userFolder], ... 
    
  3. {prepare: true}告訴客戶端準備這個語句,如果多次使用它優化其執行和參數傳輸

最後但並非最不重要的是,請不要將密碼保存清楚。