Node.js 在Waterline-Sails.js-MongoDB中找不到使用自引用关联
我正在尝试使用Waterline中的关联创建一个树结构,它最终连接到MongoDB数据库。树编号的定义为: TreeNode.jsNode.js 在Waterline-Sails.js-MongoDB中找不到使用自引用关联,node.js,mongodb,tree,sails.js,waterline,Node.js,Mongodb,Tree,Sails.js,Waterline,我正在尝试使用Waterline中的关联创建一个树结构,它最终连接到MongoDB数据库。树编号的定义为: TreeNode.js module.exports = { attributes: { name: 'string', childrenCategory: 'string', parent: { model: 'TreeNode' }, children: {
module.exports = {
attributes: {
name: 'string',
childrenCategory: 'string',
parent: {
model: 'TreeNode'
},
children: {
collection: 'TreeNode',
via: 'parent'
}
}
};
这就是我的树结构。此节点引用自身具有同一节点的多个子节点和唯一的父节点,同样也是同一节点的子节点。
填充这些树似乎是可行的。但是,尝试查找具有给定“父节点”的节点不会。以下查询没有给出任何结果:
TreeNode.find().where({parent: someId}).exec(function (err, r) {}
有什么想法吗?还有,你觉得这个树结构怎么样?
谢谢 看看这篇文章:
如果您尝试使用
objectid
作为父对象的类型,是否会有所帮助?查询与您显示的数据结构不匹配。您的文档中的父ID存储在哪里?请查看回复中的感谢信息。Sebastina,因为“父级”是对同一文档(TreeNode)的引用,id将是主文档的id。我没有声明“id”,因为它是自动生成的,所以应该在那里。这篇文章的区别在于,它们使用了两个不同文档之间的引用,而这是对其自身的引用。我不知道这是否可能真的,我并没有在水线上发现任何关于树木的东西。这绝对有效。您能在创建TreeNode实例的地方发布一些代码吗?也许问题就在那里。请记住,仅将子节点
添加到实例不会设置这些节点的父节点
属性;您必须手动设置…反之亦然。。。