Mongoose 4.1混合型模式upsert

时间:2015-10-20 22:17:35

标签: mongoose upsert

我需要了解(如果可能的话)我是如何做到这一点的。混合模式类型。 我想使用无模式方法,但我需要根据我可以提供的属性插入或更新行。

这可能吗?

现在我有:

架构定义:

var schema = new mongoose.Schema
    ({
            any: mongoose.Schema.Types.Mixed
        },
        {
            strict: false
        });

当我这样做时:

var modelo = new Modelo();

    modelo.markModified('extid');

    var outcome = modelo.update(
        {extid:  result.extid},
        result,
        {upsert: true},
        function (err, raw) {
            if (!err) {
                console.log("persisted");
            } else {
                console.log(err);
            }
        });

结果是完整对象,我想根据是否' extid'更新/插入存在。

我现在得到的例外是:

    oldCb(error, result ? result.result : { ok: 0, n: 0, nModified: 0 });
      ^

TypeError: oldCb is not a function

我问道,我觉得不可能将这种方法用于混合型'架构。这是基于我知道我的模型不包含'更新(..)'的定义。 lambda函数。只是'保存(..)' - 这是有效的,但只是将数据刷新到表中而没有我需要的逻辑。

感谢您的回答!

1 个答案:

答案 0 :(得分:0)

据我所知,这是不可能的。 我使用' mongodb'克服了这个问题。 npm包而不是'mongoose'这是按预期工作的。