我刚刚将我的Rails应用程序从MySql迁移到Neo4j。我已将用户网站列表存储为我的数据库中的序列化字符串(例如User.websites =“www.facebook.com”,“www.twitter.com”等)。
当我尝试创建或更新该属性时,我收到以下错误:
RuntimeError(不允许存储值为...的数组
在Neo4j中存储阵列或序列化数据的最佳方法是什么?
答案 0 :(得分:3)
这在很大程度上取决于您以后想要使用此数据做什么。这个网站对您的数据模型有意义吗?或只是记录东西?
在案例1中,所以如果您的模型有意义。我的建议是有这样的用户--- [related_to] --->网站(URL:字符串)
在案例2中,它们可以只是用户节点内的一个字符串数组。正如您在Neo4j api documentation中所看到的,您可以将属性存储为下一组类型:
java.lang.String或String []
答案 1 :(得分:0)
除了上面的讨论,这里还有一个序列化的示例方法(http://gist.github.com/1674551)
module Neo4j
module TypeConverters
class SerializeConverter
# serializes to sting
class << self
def convert?(type)
type == :serialize
end
def to_java(value)
return nil unless value
JSON.generate(value).to_s
end
def to_ruby(value)
return nil unless value
JSON.parse(value.to_s)
end
end
end
end
end
Neo4j::TypeConverters.converters = nil # reload converters