如何处理Express.js中的错误?
例如,如果用户调用不存在的资源?
我正在尝试在 Cypher 中使用 Neo4j 2.1.5 正则表达式匹配并遇到问题。
我需要对用户有权访问的特定字段实施全文搜索。访问要求是关键,它阻止我将所有内容转储到 Lucene 实例中并以这种方式进行查询。访问系统是动态的,因此我需要查询特定用户有权访问的节点集,然后在这些节点内执行搜索。我真的很想将节点集与 Lucene 查询进行匹配,但我不知道如何做到这一点,所以我现在只使用基本的正则表达式匹配。我的问题是 Neo4j 并不总是返回预期的结果。
例如,我有大约 200 个节点,其中之一如下:
( i:node {name: "Linear Glass Mosaic Tiles", description: "Introducing our new Rip Curl linear glass mosaic tiles. This Caribbean color combination of greens and blues brings a warm inviting feeling to a kitchen backsplash or bathroom. The colors work very well with white cabinetry or larger tiles. We also carry this product in a small subway mosaic to give you some options! SOLD OUT: …Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的函数:
func Foo(result interface{}) error {
...
json.Unmarshal([]byte(some_string), result)
...
}
Run Code Online (Sandbox Code Playgroud)
这被称为:
var bar Bar
Foo(&bar)
Run Code Online (Sandbox Code Playgroud)
通常,Foo获取一个字符串,然后将其编组到结果中.但是,现在我需要更新它,以便Foo有时从另一个源加载数据并返回它.
type Loader func() (interface{})
func Foo(result interface{}, Loader load) error {
...
data := load()
// result = data ???
...
}
Run Code Online (Sandbox Code Playgroud)
我有什么方法可以将这个新值分配给结果吗?我发现我可以将数据编组成一个字符串,然后将其解组成结果,但是我无法想象这是最好的方法.
我正在尝试在PostgreSQL 9.2中设置全文搜索。我创建了一个新表来保存要搜索的内容(以便可以搜索许多不同类型的项目),如下所示:
CREATE TABLE search (
target_id bigint PRIMARY KEY,
target_type text,
fts tsvector
);
CREATE INDEX search_fts ON search USING gin(fts);
Run Code Online (Sandbox Code Playgroud)
每次将新项目插入(或更新)到我要搜索的各个表之一时,应将其自动添加到search表中。假设我的表如下所示:
CREATE TABLE item (id bigint PRIMARY KEY, name text NOT NULL, description text);
Run Code Online (Sandbox Code Playgroud)
我创建了一个触发器,该触发器传递了我希望能够搜索的列名:
CREATE TRIGGER insert_item_search BEFORE INSERT
ON item FOR EACH ROW EXECUTE PROCEDURE
insert_search('{name, description}'::text[]);
Run Code Online (Sandbox Code Playgroud)
然后创建一个新函数insert_search为:
CREATE OR REPLACE FUNCTION insert_search(cols text[]) RETURNS TRIGGER AS $$
BEGIN
INSERT INTO search (target_id, target_type, fts) VALUES (
NEW.id, TG_TABLE_NAME, to_tsvector('english', 'foo')
); …Run Code Online (Sandbox Code Playgroud) 我正在尝试将一些更改从一个分支合并到我的存储库中的另一个分支.我使用以下内容来找出差异:
git diff branchA...branchB path/to/files > diff.patch
Run Code Online (Sandbox Code Playgroud)
这很有效,并展示了我所有的变化.然后我去手动更新了我想要的branchA中的文件并提交了它们.Git状态显示一切都是最新的.现在我想再次运行差异以确保我没有错过任何东西.
然而,当我运行差异时,它显示了我第一次运行它时所有相同的差异.例如,它显示我在branchB中添加的行,即使branchA中现在存在确切的行.
我猜这是因为我手工完成合并,但我现在又如何获得正确的差异?