猫鼬 4.1 混合类型模式更新插入
Mongoose 4.1 mixed type schema upsert
我需要了解如何(如果可能)'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' 是否存在,结果是我想要 update/insert 的完整对象。
我现在遇到的异常是:
oldCb(error, result ? result.result : { ok: 0, n: 0, nModified: 0 });
^
TypeError: oldCb is not a function
我直截了当地问,我觉得不可能将这种方法与 'mixed type' 模式一起使用。这是基于知道我的模型不包含 'update(..)' lambda 函数的定义。只是 'save(..)'——它在工作,但只是在没有我需要的逻辑的情况下将数据刷新到 table。
感谢您的回答!
据我目前所知,这是不可能的。
我已经克服了这个问题,只是使用 'mongodb' npm 包而不是按预期工作的 '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' 是否存在,结果是我想要 update/insert 的完整对象。
我现在遇到的异常是:
oldCb(error, result ? result.result : { ok: 0, n: 0, nModified: 0 });
^
TypeError: oldCb is not a function
我直截了当地问,我觉得不可能将这种方法与 'mixed type' 模式一起使用。这是基于知道我的模型不包含 'update(..)' lambda 函数的定义。只是 'save(..)'——它在工作,但只是在没有我需要的逻辑的情况下将数据刷新到 table。
感谢您的回答!
据我目前所知,这是不可能的。 我已经克服了这个问题,只是使用 'mongodb' npm 包而不是按预期工作的 'mongoose'。