addToCollection并设置中间表列的值

时间:2018-12-19 11:53:52

标签: sails.js

我正在使用Sails v1.1-

以下是“通过”关联中的示例-https://sailsjs.com/documentation/concepts/models-and-orm/associations/through-associations

他们基本上将“直通”关联定义为自定义模型。因此,这实际上不是“直通”,而只是控制多对多关系的联接表。

因此,在中间模型中,我添加了一个自定义属性isTyping,如下所示。

是否可以添加到集合中并同时设置此中间值?

对于带有setIntermediate的示例伪代码:

User.addToCollection(userId, 'pets', petId).setIntermediate('isTyping', true);

因此,请遵循文档上的示例:

myApp/api/models/User.js

module.exports = {

  attributes: {
    name: {
      type: 'string'
    },
    pets:{
      collection: 'pet',
      via: 'owner',
      through: 'petuser'
    }
  }
}

myApp/api/models/Pet.js

module.exports = {
  attributes: {
    name: {
      type: 'string'
    },
    color: {
      type: 'string'
    },
    owners:{
      collection: 'user',
      via: 'pet',
      through: 'petuser'
    }
  }
}

myApp/api/models/PetUser.js

module.exports = {
  attributes: {
    owner: {
      model:'user'
    },
    pet: {
      model: 'pet'
    },
    // I ADDED THIS INTERMEDIATE COLUMN NAME in the join table
    isTyping: {
      type: 'boolean',
      defaultsTo: false
    }
  }
}

1 个答案:

答案 0 :(得分:0)

我不知道这是否正确,但是要做的是代替使用>>> len(0) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: object of type 'int' has no len() / Pet.addToCollection(petId, 'owners', userId)User.addToCollection(userId, 'pets', petId) / Pet.removeFromCollection(petId, 'owners', userId)

User.removeFromCollection(userId, 'pets', petId)

我不确定是否正确,并且不支持PetUser.create({ owner: userId, pet: petId, isTyping: true }).populate('user').populate('pet') / addToCollection的数组参数。而且,您还必须对数据进行整理,以获取具有removeFromCollection的数据透视表属性的owners / pets列表。