- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在编写一个应用程序,该应用程序从 CouchDB 文档中提取附件,将其写入磁盘,对其进行操作,然后将生成的文档存储回 CouchDB。第一部分表现出色。获取附件、将其写入磁盘并进行操作都没有问题。
要复制下面的错误,您需要以下内容:
更改 _workdir 的位置以匹配您创建目录的位置。
将程序另存为uploadPNG.js
。使用此命令运行
./uploadPNG.js --id 目录名称
。
它应该遍历所有文件并将其添加到与目录具有相同 ID 的 CouchDB 文档中。下面的代码实际上确实提取了文档。它只是不添加附件,我不知道为什么。这是运行程序产生的错误。
任何人都可以帮助我让它像我想象的那样工作吗?
<小时/>{ [Error: CouchDB error: {"error":"unknown_error","reason":"function_clause"}]
statusCode: 500,
error: 'unknown_error',
reason: 'function_clause' }
Error: CouchDB error: {"error":"unknown_error","reason":"function_clause"}
at /Users/digilord/projects/superslick/couch_worker/node_modules/txn/lib/lib.js:59:18
at Request._callback (/Users/digilord/projects/superslick/couch_worker/node_modules/txn/lib/lib.js:125:12)
at Request.self.callback (/Users/digilord/projects/superslick/couch_worker/node_modules/txn/node_modules/request/index.js:142:22)
at Request.EventEmitter.emit (events.js:98:17)
at Request.<anonymous> (/Users/digilord/projects/superslick/couch_worker/node_modules/txn/node_modules/request/index.js:856:14)
at Request.EventEmitter.emit (events.js:117:20)
at IncomingMessage.<anonymous> (/Users/digilord/projects/superslick/couch_worker/node_modules/txn/node_modules/request/index.js:808:12)
at IncomingMessage.EventEmitter.emit (events.js:117:20)
at _stream_readable.js:895:16
at process._tickCallback (node.js:415:13)
<小时/>
#!/usr/bin/env node
var fs = require('fs'),
path = require('path'),
mime = require('mime'),
glob = require("glob");
var txn = require('txn').defaults({"timestamps":true, "couch":"http://localhost:5984"});
var presentations_txn = txn.defaults({"db":"presentations", "delay":1000, "timeout":30000});
var argv = require('optimist')
.usage('Usage: $0 --id [Document ID]')
.demand(['id'])
.argv;
var _doc_id = argv.id;
var _workdir = path.join(path.resolve('/Volumes/ramdisk'), 'work');
var _docdir = path.join(_workdir, _doc_id);
var _doc = null
var addAttachments = function(doc, to_txn){
console.log(doc);
console.log('Initial document fetched for: ', doc._id);
console.log('Ready to push files to CouchDB for: ', _doc_id);
var _globPattern = _docdir + '/*.png';
var _pngs = glob.sync(_globPattern);
// console.log('PNGs: ', _pngs);
_pngs.forEach(function(_file){
var _filecontents = fs.readFileSync(_file);
var _mime_type = mime.lookup(_file);
var _filename = _file.split('/').pop();
console.log("Processing Attachment: ", _filename)
if(typeof doc._attachments[_filename] == 'object'){
doc._attachments[_filename].content_type = _mime_type;
doc._attachments[_filename].body = _filecontents;
} else {
doc._attachments[_filename] = {};
doc._attachments[_filename].content_type = _mime_type;
doc._attachments[_filename].body = _filecontents;
}
// uploadAttachment(_file, _docdir, _doc_id)
});
doc.processed = true;
to_txn()
}
presentations_txn({"id": _doc_id}, addAttachments, function(error, newData) {
if(!error)
return console.log("Processed " + _doc_id + " to state: " + newData.processed);
// These errors can be sent by Txn.
if(error.timeout)
return console.log("Gave up after MANY conflicts");
if(error.conflict)
return console.log("addAttachments never completed. Troubleshoot and try again");
console.log(error);
throw error; // Unknown error
});
最佳答案
我认为您需要对附件正文进行 Base64 编码。另外,我认为附件内容存储在 .data
下,而不是 .body
下。
doc._attachments[_filename].content_type = _mime_type;
doc._attachments[_filename].data = _filecontents.toString('base64');
关于node.js - 在 Node.js 中使用 TXN 将附件上传到 CouchDB 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18945757/
尝试从(嵌入式)QuestDb 读取数据时,我偶尔会在服务器上收到“txn-txn-inflight limit reached [txn=251584, min=240384]”。 它会在一段时间(
正在尝试使用 coreos/jetcd 用于更新 etcd 中的 haproxy 设置来自Java代码。 我想要实现的是: 删除单个主机的所有端点 添加给定主机的更新数据 我想通过前缀删除所有键,并将
我一直在尝试将用户信息插入到我的 mongodb 中。由于我希望用户名和电子邮件都是唯一的,因此我为其创建了一个电子邮件代理集合。 userID := bson.NewObjectId() email
这是我的代码: @覆盖 公共(public)无效updateUser(字符串实例,字符串商店名称,最终字符串用户Id, 最终字符串新用户名,最终字符串新密码){ if (商店名称 == null ||
我将一个颠覆 check out 到/home/svn/docs,然后我选择使用不同的路径,用 rm-rf 删除那个目录,并 check out 一个新的存储库到我的 home/user/docs 目
我刚刚在我的 ubuntu 服务器上设置了 svn。我有一个我可以登录的用户。问题是每当我尝试对文件结构进行更改时,我都会收到权限被拒绝的错误。 Can't open file '/var/www-s
因为在 mgo/txn 中没有 Upsert,当我不知道文档是否已经存在时,我先插入然后更新。像这样(记住这是一个简单的例子,实际上我也会改变不同的文档)-- ops := []txn.Op{{
我在 etherscan.io 看到过一些交易。但是我发现即使在同一个智能合约中调用相同的函数,txn 使用的 gas 是不同的。我尝试发现可能是输入数据导致的。真的吗? 最佳答案 输入数据可能不同,
我目前正在运行在 Parallels Desktop Build 9.0.24237 中运行的 Ubuntu 12.04 VM,并且正在运行 SVN 客户端版本 1.8.9。我尝试将我的代码提交到运行
我在Windows 7计算机上的远程服务器(Server 2007 R2)和Tortoise SVN 1.6.12 x64上运行VisualSVNServer。我已经在服务器上建立了一个存储库,并且能
这是获取实体列表的示例代码,示例用户s: final EntityIterable allUsers = txn.getAll("User); // returns million records f
所以我需要在我的网站中集成 PAYPAL 结账功能。而且我对 Paypal 集成没有太多经验。如果您能提供帮助,那将是非常棒的。所以我已经完成了这个 Tutorial 我已经创建了两个 PAYPAL
我遇到了 Apache Subversion 存储库的问题,我正在寻找 最佳 解决方案: 我无法提交到 Subversion 存储库,并且出现错误: svn: E720002: Commit fail
我按照 this 在我的本地系统 /svn/repos/myproject 上设置了 svn教程。我可以在浏览器中查看 repo 协议(protocol)。 但是当它尝试导入新项目时我无法通过 svn
无法打开文件“/svn/p/thegreatwar/svn/db/txn-current-lock”:权限被拒绝 你好。我和我的 mod 团队一直在使用一个 SVN 存储库,该存储库是由一位早已离开的
我在 Mac OS X 中遇到 SVN 问题.. 当我提交以下任何文件时,都会生成错误。 svn:提交失败(详细信息如下):svn:无法获得文件“/Volumes/SvnProject/db/txn-
我将 Spring Boot 与 JOOQ 结合使用(不是 spring 数据)。 我想将每个 jdbc 连接的默认事务隔离设置为可序列化。我该怎么做? 最佳答案 您正在使用 JOOQ 事务。它们不支
我正在使用 8.0 版的 Marklogic XCC 连接器,我的数据库是 Marklogic 服务器 6.0。我在提交查询时收到此异常 RequestServerException 并且 trans
我最近开始学习 Go,到目前为止我非常喜欢它。我想了解如何使用 mgo Mongo 驱动程序制作 REST API。 在网站上,共有三个API:mgo、mgo/bson、mgo/txn。它们是什么意思
一个小时后,我无法提交到我的 svn 存储库。我的 svn 服务器上的所有存储库都受到影响。 更新和 checkout 工作正常。提交会产生以下错误: svn:提交失败(详情如下): svn:无法获得
我是一名优秀的程序员,十分优秀!