我正在尝试理解来自this Github repo的代码,并且我坚持使用这个特定代码:
#!/usr/bin/env node
var fs = require('fs');
var path = require('path');
var mkdirp = require('mkdirp');
var minimist = require('minimist');
var level = require('level');
var strftime = require('strftime');
var through = require('through');
var editor = require('editor');
var stringify = require('json-stable-stringify');
var os = require('os');
var tmpdir = (os.tmpdir || os.tmpDir)();
var HOME = process.env.HOME || process.env.USERPROFILE;
var datadir = path.join(HOME, '.clocker');
mkdirp.sync(datadir);
var db = level(path.join(datadir, 'db'), { encoding: 'json' });
# [...]
# *SNIPP*
# [...]
var s = db.createReadStream({
gt: 'time!', lt: 'time!~',
limit: 1, reverse: true
});
我知道这个createReadStream
会根据传递给createReadStream
的对象字面值从数据库中获取一些记录。
我不明白的是:'time!'
和'time!~'
做了什么?它们是字符串文字,所以我猜他们会告诉关卡引擎做某事或假设某些值?
可悲的是,我没有找到任何可以帮助我的文件。
你能帮我理解这个片段里发生了什么吗? 此外,如果您有关于这些参数的文档链接(遗憾的是,我不知道如何搜索它们),我会很高兴。
答案 0 :(得分:0)
考虑一下ASCII,
考虑字符串时间!和时间!〜
如果你看一下 http://www.asciitable.com/
你会注意到〜是126,而且!是33
所有非空间特殊和字母数字ascii字符落入之间的空间!和〜,所以代码真的只是在时间之间过滤!和时间!〜
e.g。 timea timeb timec将落入此范围 (编辑:我搞砸了平等的方向,不应该包含在匹配的字符串中)