2017-05-16 9 views
2

dateof(now())を使用すると以下の挿入クエリが機能しません。しかし、new Date('2017-09-01 00:00:00+0000')、これは動作しています。Node.jsでカサンドラの現在のタイムスタンプ

router.post('/recent_activities', function(req, res, next) { 
    var body = req.body; 

    console.log(body); 
    console.log(body.id + body.setid); 

    var query = "Insert into recent_activities 
    (id, setid, companyid, activity_name, activity_date, activity_by) values(? , ? , ? , ? , ? , ?) 
    " 

    client.execute(query, [body.id, body.setid, body.companyid, body.activity_name, dateof(now()), body.activity_by], 
    function(err, result) { 
     if (err) { 
     throw err; 
     } else { 
     console.log('success!'); 
     } 
    }); 

    res.json({ id: 201, message: 'All Success' }); 
}); 

500の内部サーバーエラーが発生しています。

は現在

ReferenceError: now is not defined 

at /apps/node_cassandra/routes/index.js:96:85 

at Layer.handle [as handle_request] 

(/apps/node_cassandra/node_modules/express/lib/router/layer.js:95:5) 
    at next 

(/apps/node_cassandra/node_modules/express/lib/router/route.js:137:13) 
    at Route.dispatch 

(/apps/node_cassandra/node_modules/express/lib/router/route.js:112:3) 
    at Layer.handle [as handle_request] 

(/apps/node_cassandra/node_modules/express/lib/router/layer.js:95:5) 


    at /apps/node_cassandra/node_modules/express/lib/router/index.js:281:22 

答えて

0
var query ="Insert into recent_activities (id,setid,companyid,activity_name,activity_date,activity_by) values (? , ?, ?, ?, **dateof(now())**, ?)" 
    client.execute(query,[body.id,body.setid,body.companyid,body.activity_name,body.activity_by], function(err, result) { 

追加「dateofは(今())」の挿入値に追加することによって、私のために働きました。

1

dateOf()SELECT句で使用

に定義されていない場合、この関数は、結果セット内の timeuuidカラムのタイムスタンプを抽出します。この関数は、抽出された タイムスタンプを日付として返します。生のタイムスタンプを取得するには、unixTimestampOf()を使用します。

文書に従ってdateOfがselect句で使用されています。

now()は、挿入のためのタイムアウトを生成するために使用されます。

したがって、列のデータ型がtimeuuidの場合は、now()しか使用できません。 タイムスタンプの場合は、日付をnew Date()と入力します。

また、インサート

dateOf

1

問題で使用できる利用可能なtoDate機能、...

client.execute(query, 
[body.id,body.setid,body.companyid,body.activity_name, dateof(now()),body.activity_by], 

があるが...あなたのコードがあるかのようにdateof(now())を参照しているということですこれはNode.jsコードのローカル変数です。私は引用符でそれを置くことをお勧めしたい...

body.activity_name, "dateof(now())",body.activity_by], 

...それはそれはあなたの文へのパラメータとして扱われているときに、予定のように動作しない場合があります。この場合の

、ちょうどあなたのINSERT文...

var query ="Insert into recent_activities 
    (id,setid,companyid,activity_name,activity_date,activity_by) 
    values (?, ?, ?, ?, dateof(now()) , ?)" 

を変更することが容易に...その後、あなたのパラメータリストから削除することがあります。

dateOf(now())はSELECTクエリで使用されることに注意してください。 INSERT/UPDATEでそれを使用すると、ミリ秒単位で時間値を格納するという副作用がありますが、実際にそこにいることを示すことはできません。詳細はこれを参照してください。Cassandra cqlsh - how to show microseconds/milliseconds for timestamp columns?

関連する問題