Node.JS支架和couchDB辅助
我是Node.JS的noob。 我正在使用CouchDB和摇篮。 在couchDB中,我有一个名为“test”的数据库,其中有一个名为“exercise”的文档。 文档有两个字段:“全名”和“年龄”。 保存数据的代码如下所示:Node.JS支架和couchDB辅助,node.js,couchdb,cradle,Node.js,Couchdb,Cradle,我是Node.JS的noob。 我正在使用CouchDB和摇篮。 在couchDB中,我有一个名为“test”的数据库,其中有一个名为“exercise”的文档。 文档有两个字段:“全名”和“年龄”。 保存数据的代码如下所示: var cradle = require('cradle'); var connection = new(cradle.Connection)('http://127.0.0.1', 5984, { auth: { username: 'toto_finish',
var cradle = require('cradle');
var connection = new(cradle.Connection)('http://127.0.0.1', 5984, {
auth: { username: 'toto_finish', password: 'password' }
});
var db = connection.database('test');
db.save('exercise', {
FullName: param_name, Age: param_age
}, function (err, res) {
if (err) {
// Handle error
response += ' SAVE ERROR: Could not save record!!\n';
} else {
// Handle success
response += ' SUCESSFUL SAVE: The record was saved in CouchDB!\n';
}
http_res.end(response);
});
这段代码运行良好,它将数据保存到CouchDB。
我的问题是当我想读取数据时。
我写的代码是:
var cradle = require('cradle');
var connection = new(cradle.Connection)('http://127.0.0.1', 5984, {
auth: { username: 'toto_finish', password: 'password' }
});
var db = connection.database('test');
db.view('exercise/all', {descending: true}, function(err, res)
{
console.log(res);
res.forEach(function (row) {
response = 'FullName: ' + row.FullName + '\n Age: ' + row.Age + '\n';
});
});
http_res.end(response);
当我试图打印响应时,响应是空的,我不知道我做错了什么。我知道它没有进入forEach循环,但我不明白为什么
控制台输出为:
[ { id: 'exercise',
key: null,
value:
{ _id: 'exercise',
_rev: '1-7042e6f49a3156d2099e8ccb3cc7d937',
FullName: 'Toto Finish',
Age: '30' } } ]
提前感谢您的响应或回答。尝试将http_res.send()调用移动到提供给db.view的回调中-匿名函数(err,res){} 但是,我不确定.forEach语句,您只能从response变量中的查询中获得最后一个值,您也应该研究一下 spotirca是对的 db.view函数是异步的,因此在视图返回任何数据之前调用http_res.end(response) 您可以通过在console.log和http_res.end中返回日期来证明这一点
console.log(res, new Date())
及
http响应将具有更早的日期/时间。我忘了提到我创建的视图如下:函数(doc){emit(null,doc);}
http_res.end(response, new Date());