Sails.js和Waterline ORM取消设置关键MongoDB

bri*_*ian 5 sails.js waterline sails-mongo

使用Waterline ORM在MongoDB中取消设置密钥的方法是什么?

请考虑以下文档:

{
    name : 'brian',
    age : 29
}
Run Code Online (Sandbox Code Playgroud)

获得用户是没有问题的:

var users = Users.findOne({ name : 'brian' }).exec(cb);
Run Code Online (Sandbox Code Playgroud)

我希望年龄能够消失.我已尝试以下方法来完成此任务:

user.age = undefined;
user.save();

user.age = null;
user.save();

delete user.age;
user.save();
Run Code Online (Sandbox Code Playgroud)

似乎没有工作.#1将其设置为null,#2将其设置为null,#3保留原始值.

谢谢.

sgr*_*454 6

Waterline是一种旨在支持各种数据存储的ORM,因此它不支持MongoDB特有的方法.您始终可以使用该.native()方法访问基础MongoDB驱动程序,然后执行任何操作(请参阅MongoDB节点驱动程序文档以获取可用方法):

User.native(function(err, collection) {

    collection.findAndModify(
        {name: 'brian'}, 
        {$unset: {age: true}}, 
        function (err, object) {
           // Continue...
        }
    );
})
Run Code Online (Sandbox Code Playgroud)