我在想,我们如何阻止用户/开发者添加不需要的节点/关系/属性?
我读到的是 - 我们应该在应用程序级别强加这些架构。那么,我们怎样才能在Node.js中做到这一点?
这有什么例子吗?或者有人可以在这里发布一些代码吗?
答案 0 :(得分:1)
这取决于您的应用程序的工作方式。
您可以在应用程序中创建自己的验证,但这取决于应用程序的类型。
更好的选择是为Neo4j创建自己的非托管扩展。您可以使用事务事件API - http://graphaware.com/neo4j/transactions/2014/07/11/neo4j-transaction-event-api.html
GraphAware为架构强制执行者提供付费扩展程序 - http://graphaware.com/enterprise/
答案 1 :(得分:0)
Neo4j支持一些有限的架构实施。具体做法是:
Uniqueness constraints.指定一个节点属性,该属性充当具有给定标签的节点的唯一ID。将回滚尝试违反约束的事务。使用以下语法在Cypher中创建唯一性约束:
CREATE CONSTRAINT ON (p:Person) ASSERT p.name IS UNIQUE
Property existence constraints.此约束确保给定标签的所有节点都包含指定的属性。将回滚任何未指定给定属性的create语句。可以使用以下语法创建属性存在约束:
CREATE CONSTRAINT ON (book:Book) ASSERT exists(book.isbn)
请注意,属性存在限制是Neo4j 2.3中的新功能,仅适用于Neo4j Enterprise。