首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sails js保存多对多只有一种方法。

sails js保存多对多只有一种方法。
EN

Stack Overflow用户
提问于 2015-02-10 01:06:26
回答 1查看 463关注 0票数 0

我有两个模型:

user.js

代码语言:javascript
复制
module.exports = {
attributes: {
    ...
    profile: {
        model: 'Profile'
    },
    groups: {
        collection: 'group',
        via: 'users',
        dominate: true
    },
    roles: {
        collection: 'role',
        via: 'users',
        dominate: true
    }
}};

还有,group.js

代码语言:javascript
复制
module.exports = {
attributes: {
    ...
    users: {
        collection: 'user',
        via: 'groups'
    }
}};

当我尝试将用户添加到组中时(当我选择一个组并将用户添加到组中时),它会正常工作。

代码语言:javascript
复制
var defer = q.defer();
    baseDbContext.single(req, 'users')
        .then(function(op){
            if(!op.status || !op.obj) {
                defer.resolve(notFound);
                return;
            }

            op.obj.users = [];
            _.each(req.users, function(item){
                op.obj.users.add(item);
            });

            op.obj.save(function(err, obj){
                if(err) defer.reject(operationResult().throwException(err));
                else defer.resolve(operationResult().succeed());
            });
        });
    return defer.promise;

但是,当我尝试向用户添加组时(当我选择用户并向其添加组时),它会静默失败!

代码语言:javascript
复制
var defer = q.defer();
    baseDbContext.single(req, 'groups')
        .then(function(op){
            if(!op.status || !op.obj) {
                defer.resolve(notFound);
                return;
            }

            op.obj.groups = [];
            _.each(req.groups, function(item){
                op.obj.groups.add(item);
            });

            op.obj.save(function(err, obj){
                if(err) defer.reject(operationResult().throwException(err));
                else defer.resolve(operationResult().succeed());
            });
        });
    return defer.promise;

当我在sails控制台中检查它时,它显示:

代码语言:javascript
复制
throw new Error('Unknown rule: ' + ruleName);
Error: Unknown rule: dominate

这是一个简单的多对多插入,为什么它会失败呢?(关于代码的说明,函数baseDbContext.single根据对象的id查找对象,第二个参数用于填充)

EN

回答 1

Stack Overflow用户

发布于 2015-03-26 20:35:03

看起来你有一个印刷错误,documentation说你需要的规则是写成“主导:真”,而不是“统治:真”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28415244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档