Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何使用PockDB(leveldb)将我的electron应用程序与Cloudant或任何其他支持couchDB和sync的数据库连接起来_Node.js_Electron_Couchdb_Pouchdb_Cloudant - Fatal编程技术网

Node.js 如何使用PockDB(leveldb)将我的electron应用程序与Cloudant或任何其他支持couchDB和sync的数据库连接起来

Node.js 如何使用PockDB(leveldb)将我的electron应用程序与Cloudant或任何其他支持couchDB和sync的数据库连接起来,node.js,electron,couchdb,pouchdb,cloudant,Node.js,Electron,Couchdb,Pouchdb,Cloudant,我正在使用PockDB创建一个电子应用程序,我希望该应用程序能够区分不同的客户,并在他们之间同步数据。作为我制作教程的一个例子,我将代码改编为electron,并在cloudant创建了一个noSQL数据库 目前我可以保存数据,但无法与cloudant中的远程数据库同步。这是我用来在两个数据库之间同步数据的端点 这是我得到的错误。 下面是我的script.js的代码 (函数(){ "严格使用",; var$=document.querySelector.bind(文档); var ENTE

我正在使用PockDB创建一个电子应用程序,我希望该应用程序能够区分不同的客户,并在他们之间同步数据。作为我制作教程的一个例子,我将代码改编为electron,并在cloudant创建了一个noSQL数据库

目前我可以保存数据,但无法与cloudant中的远程数据库同步。这是我用来在两个数据库之间同步数据的端点

这是我得到的错误。

下面是我的script.js的代码

(函数(){
"严格使用",;
var$=document.querySelector.bind(文档);
var ENTER_KEY=13;
var newtodom=document.getElementById('new_todo');
var syncDom=document.getElementById('sync-wrapper');
//编辑从这里开始(您不需要编辑此行上方的任何内容)
var NodePouchDB=require('pockdb');
var db=新的NodePouchDB('todos');
var couchdb=require('felix-couchdb')
var remotecoach=couchdb.createClient(5984,'https://ac725f4e-29ec-4614-8e96-02ebc74a529b-bluemix.cloudant.com/')
数据库信息(函数(错误,信息){
日志(“正在工作”,信息)
db.changes({
自:info.update_seq,
现场直播:真的
}).on(“变更”,showTodos);
});
//我们必须创建一个新的todo文档并将其输入数据库
函数addTodo(文本){
变量todo={
_id:new Date().toISOString(),
标题:文本,
已完成:false
};
db.put(todo).then(函数(结果){
log(“一切正常”);
控制台日志(结果);
}).catch(函数(err){
log(“一切都很糟糕”);
控制台日志(err);
});
}
//通过从数据库中读取TODO来显示当前TODO列表
函数showTodos(){
allDocs({include_docs:true,descending:true}){
重绘Todosui(文件行);
}).catch(函数(err){
控制台日志(err);
});
}
功能复选框已更改(todo、事件){
todo.completed=event.target.checked;
控制台日志(todo);
db.put(todo);
}
//用户按下了todo的删除按钮,将其删除
功能DeleteButton按下(todo){
db.删除(todo);
}
//编辑todo时的输入框已模糊,应保存
//新标题或删除todo(如果标题为空)
函数todoBlurred(todo,事件){
var trimmedText=event.target.value.trim();
如果(!trimmedText){
db.删除(todo);
}否则{
todo.title=trimmedText;
db.put(todo);
}
}
//初始化与远程服务器的同步
函数sync(){
setAttribute('data-sync-state','syncing');
var opts={live:true};
数据库同步(远程沙发、选项、同步错误);
}
//编辑从这里开始(您不需要编辑此行下方的任何内容)
//同步时出现某种窗体或错误
函数syncError(){
setAttribute('data-sync-state','error');
}
//用户双击了待办事项,显示输入,以便编辑标题
函数todoDblClicked(todo){
var div=document.getElementById('li_'+todo.\u id);
var-inputeittodo=document.getElementById('input_u'+todo.\u id);
div.className='编辑';
InputItTodo.focus();
}
//如果他们在编辑条目时按enter键,则模糊该条目以触发保存
//(或删除)
函数todoKeyPressed(todo,事件){
如果(event.keyCode===输入_键){
var-inputeittodo=document.getElementById('input_u'+todo.\u id);
inputedTodo.blur();
}
}
//给定一个表示todo的对象,这将创建一个列表项
//来展示它。
函数createTodoListItem(todo){
var checkbox=document.createElement('input');
checkbox.className='toggle';
checkbox.type='checkbox';
checkbox.addEventListener('change',checkboxChanged.bind(this,todo));
var label=document.createElement('label');
label.appendChild(document.createTextNode(todo.title));
label.addEventListener('dblclick',tododblicked.bind(this,todo));
var deleteLink=document.createElement('button');
deleteLink.className='destroy';
deleteLink.addEventListener('click',deleteButtonPressed.bind(this,todo));
var divDisplay=document.createElement('div');
divDisplay.className='view';
divDisplay.appendChild(复选框);
divDisplay.appendChild(标签);
divDisplay.appendChild(deleteLink);
var-inputeittodo=document.createElement('input');
inputEditTodo.id='input_u'+todo.\u id;
InputItTodo.className='edit';
inputeditodo.value=todo.title;
InputItemTodo.addEventListener('keypress',todoKeyPressed.bind(this,todo));
inputeditodo.addEventListener('blur',todoBlurred.bind(this,todo));
var li=document.createElement('li');
li.id='li_u'+todo.\u id;
li.appendChild(divDisplay);
li.附加子项(输入到子项);
如果(待办事项已完成){
li.className+=“完成”;
checkbox.checked=true;
}
返回李;
}
函数重绘TODOSUI(todos){
var ul=document.getElementById('todo-list');
ul.innerHTML='';
todo.forEach(函数(todo){
ul.appendChild(createTodoListItem(todo.doc));
});
}
函数newTodoKeyPressHandler(事件){
如果(event.keyCode===输入_键){
addTodo(newtodom.value);
newTodom.value='';
}
}
函数addEventListeners(){
newTodom.addEventListener('keypress',newTodoKeyPressHandler,false);
}
addEventListeners();
showTodos();
如果(远程沙发){
sync();
}

})();要找到问题所在,您是否可以验证是否可以正常与Cloudant数据库通话,即从命令行使用
curl
?使用
curl
,通过其id获取文档,可能是您使用Cloudant仪表板手动创建的文档。这应该可以解决身份验证的任何问题:我注意到您使用的是IAM,而IAM不是