Hej, mam pewną apkę, która została napisana dla mnie przez znajomego. Niestety ten znajomy obecnie jest zajęty czymś innym i nie chcę mu zawracać głowy. Apka zapisuje do postgresowej bazy (9.3) tweety. Problem jest z tweetami zawierającymi ' (np. I'm) apka się wywala. Może ktoś mi jest w stanie doradzić, co należy zmienić w kodzie?
function saveTweetToDB(tweet) {
try {
var values = [
tweet.created_at,
tweet.text,
tweet.user.screen_name,
tweet.geo ? tweet.geo.coordinates[0] : 0,
tweet.geo ? tweet.geo.coordinates[1] : 0
].map(function (val) {
return "'" + val + "'";
}).join(",");
} catch (e) {
console.log("error in parsing", e.message);
console.log(tweet);
}
pgClient.query("insert into tweets (data, text, user_name, lat, lng, tweet) values (" + values + ", $1)",
[JSON.stringify(tweet)], function (err, result) {
if (err) {
console.log("error in pg", err);
console.log("values", values);
}
});
}
przy zapisie do bazy dostaję taki bład:
error in pg { [error: błąd składni w lub blisko "s"]
name: 'error',
length: 109,
severity: 'BŁĄD',
code: '42601',
detail: undefined,
hint: undefined,
position: '197',
internalPosition: undefined,
internalQuery: undefined,
where: undefined,
file: 'src\\backend\\parser\\scan.l',
line: '1002',
routine: 'scanner_yyerror' }
Natomiast tabela w bazie wygląda tak:
CREATE TABLE tweets
(
id serial NOT NULL,
data timestamp without time zone,
text text,
user_name text,
lat numeric,
lng numeric,
tweet json
)
Jak pisałem całość śmiga na Postgresql 9.3, natomiast aplikacja na nodejs. Będę wdzięczny za pomoc.
dodanie znacznika <code class="javascript"> - fp