【问题标题】:Cannot find using self reference associations in Waterline - Sails.js - MongoDB在 Waterline - Sails.js - MongoDB 中找不到使用自引用关联
【发布时间】:2014-06-23 04:16:36
【问题描述】:

我正在尝试使用 Waterline 中的关联创建一个树结构,该关联最终连接到 MongoDB 数据库。 treee no的定义是:

TreeNode.js

module.exports = {
    attributes: {
        name: 'string',
        childrenCategory: 'string',
        parent: {
            model: 'TreeNode'
        },
        children: {
            collection: 'TreeNode',
            via: 'parent'
        }
    }
};

这就是我的树形结构。该节点引用自身具有同一节点的多个子节点和一个唯一的父节点,同样是同一节点。 填充这些树似乎正在起作用。但是尝试查找具有给定“父级”的节点却没有。以下查询没有给出任何结果:

TreeNode.find().where({parent: someId}).exec(function (err, r) {}

有什么想法吗?另外,您如何看待这种树状结构? 谢谢!

【问题讨论】:

  • 查询与您显示的数据结构不匹配。父母 ID 存储在您的文档中的什么位置?
  • 感谢您的回复。 Sebastina,因为“父”是对同一文档(TreeNode)的引用,所以 id 将是主文档的。我没有声明“id”,因为它是自动生成的,所以它应该在那里。
  • 建议的帖子的不同之处在于它们使用了 2 个不同文档之间的引用,这是对 selft 的引用。我不知道这是否真的可能,我没有在 Waterline 上找到任何关于树木的信息。
  • 这绝对可以。您可以在创建 TreeNode 实例的地方发布一些代码吗?也许问题就在那里。请记住,仅将children 添加到实例不会设置这些节点的parent 属性;您必须手动设置...反之亦然...

标签: node.js mongodb tree sails.js waterline


【解决方案1】:

看看这篇文章:

https://github.com/balderdashy/waterline/issues/410

如果您尝试使用 objectid 作为父级的类型,它会对您有帮助吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-21
    • 1970-01-01
    • 2015-01-06
    • 2014-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多