Reputation:
My javascript code is as follows:
var r = require('rethinkdb');
var soll1=null;
var soll=null;
r.connect( {host: 'localhost', port: 28015}, function(err, conn) {
r.db("discogs").table("releases").limit(4).run(conn, function(err, cursor) {
if (err) throw err;
cursor.toArray(function(err, result) {
if (err) throw err;
soll=result.country;
});
});
});
var http = require('http');
http.createServer(function (req, res) {res.write(soll);res.end();}).listen(3001, "127.0.0.1");
console.log('Server running at http://127.0.0.1:3001/');
My JSON in rethinkdb is as follows. i would like to extract "country" value:
{
"release":{
"genres":{
"genre":"Electronic"
},
"identifiers":{
"identifier":[
{
"description":"A-Side",
"value":"MPO SK 032 A1 G PHRUPMASTERGENERAL T27 LONDON",
"type":"Matrix / Runout"
},
{
"description":"B-Side",
"value":"MPO SK 032 B1",
"type":"Matrix / Runout"
},
{
"description":"C-Side",
"value":"MPO SK 032 C1",
"type":"Matrix / Runout"
},
{
"description":"D-Side",
"value":"MPO SK 032 D1",
"type":"Matrix / Runout"
}
]
},
"status":"Accepted",
"videos":{
"video":[
{
"title":"The Persuader (Jesper Dahlbäck) - Östermalm",
"duration":290,
"description":"The Persuader (Jesper Dahlbäck) - Östermalm",
"src":"http://www.youtube.com/watch?v=AHuQWcylaU4",
"embed":true
},
{
"title":"The Persuader - Vasastaden",
"duration":380,
"description":"The Persuader - Vasastaden",
"src":"http://www.youtube.com/watch?v=5rA8CTKKEP4",
"embed":true
},
{
"title":"The Persuader-Stockholm-Sodermalm",
"duration":335,
"description":"The Persuader-Stockholm-Sodermalm",
"src":"http://www.youtube.com/watch?v=QVdDhOnoR8k",
"embed":true
},
{
"title":"The Persuader - Norrmalm",
"duration":289,
"description":"The Persuader - Norrmalm",
"src":"http://www.youtube.com/watch?v=hy47qgyJeG0",
"embed":true
}
]
},
"labels":{
"label":{
"catno":"SK032",
"name":"Svek"
}
},
"companies":{
"company":[
{
"id":271046,
"catno":"",
"name":"The Globe Studios",
"entity_type_name":"Recorded At",
"resource_url":"http://api.discogs.com/labels/271046",
"entity_type":23
},
{
"id":56025,
"catno":"",
"name":"MPO",
"entity_type_name":"Pressed By",
"resource_url":"http://api.discogs.com/labels/56025",
"entity_type":17
}
]
},
"styles":{
"style":"Deep House"
},
"formats":{
"format":{
"text":"",
"name":"Vinyl",
"qty":2,
"descriptions":{
"description":[
"12\"",
"33 ⅓ RPM"
]
}
}
},
"country":"Sweden",
"id":1,
"released":"1999-03-00",
"artists":{
"artist":{
"id":1,
"anv":"",
"name":"Persuader, The",
"role":"",
"tracks":"",
"join":""
}
},
"title":"Stockholm",
"master_id":5427,
"tracklist":{
"track":[
{
"position":"A",
"duration":"4:45",
"title":"Östermalm"
},
{
"position":"B1",
"duration":"6:11",
"title":"Vasastaden"
},
{
"position":"B2",
"duration":"2:49",
"title":"Kungsholmen"
},
{
"position":"C1",
"duration":"5:38",
"title":"Södermalm"
},
{
"position":"C2",
"duration":"4:52",
"title":"Norrmalm"
},
{
"position":"D",
"duration":"5:16",
"title":"Gamla Stan"
}
]
},
"data_quality":"Complete and Correct",
"extraartists":{
"artist":{
"id":239,
"anv":"",
"name":"Jesper Dahlbäck",
"role":"Music By [All Tracks By]",
"tracks":"",
"join":""
}
},
"notes":"The song titles are the names of Stockholm's districts."
}
}
When I try and run it using node.js, I get the following error:
http.js:852
throw new TypeError('first argument must be a string or Buffer');
^
TypeError: first argument must be a string or Buffer
at ServerResponse.OutgoingMessage.write (http.js:852:11)
at Server.<anonymous> (/home/dhiraj/http_server.js:19:44)
at Server.emit (events.js:98:17)
at HTTPParser.parser.onIncoming (http.js:2109:12)
at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:122:23)
at Socket.socket.ondata (http.js:1967:22)
at TCP.onread (net.js:528:27)
Sorry for if my question seems cumbersome. But I can't understand where am I going wrong?
Upvotes: 1
Views: 152
Reputation: 5704
Most probably the variable soll is still null when you trying to send it. Put
console.log('soll:', soll);
just before res.write... to check it.
Upvotes: 1
Reputation: 864
As the error message says, res.write
expects a string or Buffer object, so you must make sure the output is string.
soll=result.country;
You have the soll
variable set inside some callback functions that will be executed at a later point of time when compared to res.write(soll);
statement.
So for just debug purpose you could try
res.write(soll?soll:'soll has null value');
I expect you would see
soll has null value
This way atleast you will be able to understand what goes wrong in your case :D
hope this helps you get going :D
Upvotes: 0