代码之家  ›  专栏  ›  技术社区  ›  SayJeyHi

sails.js从收集水线中移除所有成员

  •  1
  • SayJeyHi  · 技术社区  · 6 年前

    我希望删除集合拥有的所有成员,但不希望传递每个成员 ID .member() 方法。 waterline documentation 解释删除特定成员的方法,如:

    await User.removeFromCollection(3, 'pets')
    .members([99,98]);
    

    我想做如下的事情:

    await User.removeFromCollection(3, 'pets')
    .members(['*']);
    
    1 回复  |  直到 6 年前
        1
  •  4
  •   Canis djmayank    6 年前

    据我所知,这应该用 .destroy() 没有标准。

    await User.destroy();                // Removes all records from your User collection
    
    await User.destroy({name:'Bill'};    // Removes all records from your User collection
                                            where the 'name' is 'Bill'
    

    Docs: .destroy()

    更新

    在你指出我误解了你的问题之后,我想出了这个解决办法。文档 .removeFromCollection() 声明传入父ID数组将删除 全部的 指定集合中的子级,但似乎无法按写入方式工作。

    不过,我确实为您找到了一个有效的解决方案 .replaceCollection() .

    await User.replaceCollection(3, 'pets', []);
    
    OR
    
    await User.replaceCollection(3, 'pets').members([]);
    

    传入空数组将用空数组替换当前关联数组,清除当前关联。

    Docs: .replaceCollection()