使用Android
使用CouchDB
CouchBase Lite
device_number
我正在尝试复制数据库我也使用过滤器来获取名称为"1": "function(doc, req) {
if(doc.ismaster || doc._deleted)
return false;
if( 1 == doc.device_num || 22 == doc.device_num || 25 == doc.device_num || 41 == doc.device_num )
return true;
else
return false;}",
的字段的文档
所以我有这个过滤器:
"1": "function(doc, req) {
if(doc.ismaster || doc._deleted)
return false;
if( 22 == doc.device_num && 21 == doc.device_num && (Math.ceil((new Date(Date.now()).getTime() - new Date(doc.creation_date.split('/')[2], doc.creation_date.split('/')[1] - 1, doc.creation_date.split('/')[0]).getTime()) / (1000 * 3600 * 24)) <= 60) )
return true;
else
return false;}",
它工作得很好,我得到了设备的所有文件:1,2,25,41 那么现在我想得到device_num = 22和21的文件,其creation_date从现在起不到60天,所以我这样做:
app.post('/create', function (req, res) {
var playbook = new Ansible.Playbook().playbook("m2install");
playbook.on('stdout', function (data) {
console.log(data.toString());
});
playbook.on('stderr', function (data) {
console.log(data.toString());
});
var command = playbook.inventory('inventories/M2Install/hosts').verbose('v');
var promise = command.exec();
promise.then(function (successResult) {
tmp += "Create Magento Setup";
tmp += successResult.output;
fs.unlink('roles/install/vars/main.yml', function (err) {
if (!err) {
console.log('delete docker_variables.yml file ');
} else {
console.log('Not delete docker_variables.yml file');
}
});
res.render("result", {data: tmp, title: "Magento Setup Report"});
}, function (error) {
tmp += error;
res.render("result", {data: tmp, title: "Magento Setup Report"});
});
});
app.post('/setup', function (req, res) {
postcount = Object.keys(req.body).length
console.log(postcount);
for (var key in req.body) {
console.log(req.body[key]);
if (req.body[key] == "create") {
res.render('create', {title: 'Magento Setup Form'});
sucesscount++;
}
});
但我没有得到结果,0个文件,并且不是真的,因为在数据库中有少于60天的文件。
我做错了什么?
答案 0 :(得分:1)
我想获取device_num = 22和21以及其中的文档 creation_date从现在起不到60天
英文措辞:“我想要21 和 22的文件”实际上是“我会接受任何文件,其中该文件适用于21 或 22”:< / p>
if( (22 == doc.device_num || 21 == doc.device_num) && ...)
因为没有带有单个device_num的文档可以同时用于设备21和22。
世界各地的日期有点混乱,谁知道你的用户是否在同一时区? Couchdb提供some examples考虑日期中的校对因子,以下是使用number
类型进行安全校对的示例:
// creation:
{tstamp:+new Date(), device_num:22, ...}
// test
validstamp = +new Date() - 1000*60*60*24*60;
if( (22 == doc.device_num || 21 == doc.device_num) && Number(doc.tstamp) > validstamp)
...
如果存储中出现问题并且存储了字符串,那么很高兴使用Number()
。但作为数字,它们在逻辑上是连续的,没有奇怪的非零填充字符串在20世纪80年代早期和遥远的未来,你可以稍后重构使用芒果索引:
{
"tstamp": {'$gt':validstamp},
"$or": [
{ "device_num": 21 },
{ "device_num": 22 }
]
}