小编Hen*_*rik的帖子

对于这种模式,Datomic土地中更具惯用性的选择是什么?

我有一个问题,关于什么是Datomic的更惯用的架构.

假设我们有实体User,Post并且Topic.

Post可以属于Topic,User和其他Post(回复).现在,我应该

a)创建一个:posts属性,它只是一个Posts 列表,并将其注入需要引用多个Posts的每个实体中?

要么

b)建立更明确的关系,例如a Post有一个:post/author属性是对用户的引用,也许是一个:post/belongs-to可以引用一个Topic或另一个的属性Post

观察:如果我做b,我似乎得到更多的语义关系.我可以举例来说(:post/_author user-entity),它更能描述他们关系网的性质而不是(:posts user-entity)(因为,它User具有:posts什么意义?是那些被User收藏Post的,是作者Post的,还是什么?)

b的另一个副作用是我可以创建一个新的Post而不会改变任何其他实体.如果我做一个,我需要创建Post并把它插入到:posts的属性User,需要两个操作,而不是一个.

不过,我有一个感觉,一个可能是做的更地道的方式.例如,似乎更容易看到属性列表如何:posts随着时间的推移而发生变化,我是否应该这样做,如果User引用:posts而不是通过属性Post引用.User:post/author …

clojure datomic

6
推荐指数
1
解决办法
705
查看次数

如何在ClojureScript中获取正则表达式匹配的位置?

在Clojure中,我可以使用类似这样的解决方案:用于正则表达式匹配的紧凑Clojure代码及其在字符串中的位置,即re-matcher从中创建和提取信息,但重新匹配器似乎不在ClojureScript中实现.在ClojureScript中完成同样的事情有什么好方法?

编辑:

我最后编写了一个补充函数,以便保留正则表达式的修饰符,因为它被吸收到re-pos:

(defn regex-modifiers
  "Returns the modifiers of a regex, concatenated as a string."
  [re]
  (str (if (.-multiline re) "m")
       (if (.-ignoreCase re) "i")))

(defn re-pos
  "Returns a vector of vectors, each subvector containing in order:
   the position of the match, the matched string, and any groups
   extracted from the match."
  [re s]
  (let [re (js/RegExp. (.-source re) (str "g" (regex-modifiers re)))]
    (loop [res []]
      (if-let [m (.exec re s)]
        (recur (conj res …
Run Code Online (Sandbox Code Playgroud)

regex clojure clojurescript

4
推荐指数
1
解决办法
2066
查看次数

Node.js:在写入之前检查文件是否存在

我从这里知道官方的立场是在操作文件之前不检查是否存在:Node.js 检查存在文件相反,应该简单地尝试写入并处理可能抛出的任何异常。

但是,我的情况是我只想将某个文件写入文件夹,因为该文件不存在。如果文件存在,我什么都不想做。

实现这一目标的惯用方法是什么?

javascript node.js

1
推荐指数
1
解决办法
3527
查看次数

标签 统计

clojure ×2

clojurescript ×1

datomic ×1

javascript ×1

node.js ×1

regex ×1