1

このドライバーを cassandra とノード js アプリの間のブリッジとして使用しています。次の問題を除いて、すべてが今までうまく機能しているようです:

問題 varchar 型の列があります。ダッシュ (-) を含む文字列を挿入すると、cassandra がエラーをスローしますString didn't validate.

次のようなバッチステートメントを使用しています

var queryset_insert_user = {
    query: query_insert_user,
    params: query_insert_user_params,
    hints:[ dataTypes.varchar, dataTypes.varchar, dataTypes.varchar, dataTypes.varchar,
    dataTypes.varchar, dataTypes.varchar, dataTypes.varchar]
}

varchar はどこにありますか

var dataTypes = {};
dataTypes.varchar = 0x000d;  //couldn't find how to get this from API itself so just copied value from types.js of cassandra driver.

バッチステートメントは

var batchQueries = [queryset_insert_iidMetadata, queryset_insert_user];
client.batch(batchQueries,__queryOptions(), function(err, result){
       // getting err here...
});

入力パラメータは次のとおりです。

query2 params are = ["4fde84c173232d25641db25ba1b0","+0012255446633",["1415957771074"],"CGFnzVSuGwkOrVI","NEW","+001","53a985bd-bc28-3768-a1ea-e366409cb996"]

この問題 を見たときにヒントを使用しようとしたことに注意してください。

このエラーを解決するには?

4

2 に答える 2

2

Cassandra の DataStax Node.js ドライバーでは、パラメーター ヒントがクエリ オプションで渡されます。

// Queries with the parameters
const queries = [ queryset_insert_iidMetadata, queryset_insert_user ];
// Parameter hints are passed with the rest of the queryOptions
client.batch(queries, {hints: [hintForIidMeta, hintForUser]}, callback);

いずれにせよ、推奨される方法は、準備済みステートメントを使用することです。これにより、パラメーター マッピングが正確になります。

await client.batch(queries, { prepare: true })
console.log('Data updated on cluster');
于 2014-11-17T10:02:50.773 に答える