建立hasOne关系GeddyJS

时间:2012-11-08 14:23:48

标签: javascript node.js geddy

我试图从他们的网站上扩展GeddyJS Todo教程。我已将另一个模型Project添加到Todo项目中,并希望以Todo-hasOne-Project方式在Todo和Project之间建立关系。

这是我的创建控制器方法中的代码,我尝试在保存Todo项目后设置关系:

todo.save(function(err, data) {
        if(err) {
            params.errors = err;
            self.transfer('add');
        } else {
            geddy.model.Project.getProjectById(todo.parent, function(err, project) {
                if(err) {
                    params.errors = err;
                    self.transfer('add');
                }
                else {
                    todo.setProject(project);
                    self.redirect({ controller: self.name });
                }
            });

        }
    });

我使用了一个类方法(getProjectById)来获取todo的父属性(Project' id)从db中获取项目。

在我的Todo类文件中,我将hasOne关系定义如下:

this.hasOne('Project');

我不断收到编译错误:

c:\Program Files (x86)\nodejs\node_modules\geddy\node_modules\model\lib\index.js:254
            throw new Error('Item cannot have a hasOne/hasMany association ' +
                  ^
Error: Item cannot have a hasOne/hasMany association if it is not yet saved..

查找示例文档已经证明很难,所以我想我会问网上最强大的社区。

任何人都知道我错过了什么?

1 个答案:

答案 0 :(得分:1)

您是否还遇到此问题?如果是这样,你可以尝试运行

$ npm update -g geddy

这很可能会解决您的问题。