gpt4 book ai didi

mongoose array push 没有保存我的条目并且违背了我使用 push 的简单愿望

转载 作者:行者123 更新时间:2023-12-04 15:14:28 26 4
gpt4 key购买 nike

我有两个模式:

    var optionsSchema = new Schema({
locationname: String,
locationnumber : String
});

var Xoption = mongoose.model('Xoption', optionsSchema);

var estoreSchema = new Schema({
user: String,
odds: String,
//options: [optionsSchema]
options: [{ type: Schema.Types.ObjectId, ref: 'Xoption' }]
});

var Estore = mongoose.model('Estore', estoreSchema);


export default Estore;
export { Xoption };

注意选项有 [{type: Schema.Types.ObjectId, ref: 'Xoption'}] 所以它将存储来自 xoptions 集合的对象的 ID。

这是一个 Estore 文档的示例:

  {
"_id" : ObjectId("5f998198df1e7b7598ba307c"),
"options" : [
ObjectId("5f998198df1e7b7598ba307b")
],
"user" : "two",
"odds" : "two",
"__v" : 0
}

如您所见,选项数组包含 Xoptions 集合的 ID。现在,当我尝试将另一个 id 推送到选项数组时,我执行以下操作:我从 Xoption 模型中获取 id。为了在这里简化我的代码并放大问题的相关部分,我只是将它分配给一个变量:

 let getid = 'ObjectId("5f997d78ace0547ba8c05646")';   

现在我需要将该 id 推送到我的 Estore 中的选项数组,所以我执行以下操作:

Estore.findOne({ "odds": "two" }).then(doc => {
console.log("xxx", doc.options);
doc.options.push(getid);

}).catch(err => {
console.log("error message :", err);
});

当我这样做时,我收到一条错误消息:错误转换为 ObjectId,错误原因是:

    reason:
Error: Argument passed in must be a single String of 12 bytes or a string of 24 hex characters

现在我到了某个地方,所以我从变量中取出了 ObjectId,我没有收到任何错误,但 id 没有被推送到选项数组:

let getid = '5f997d78ace0547ba8c05646';

这只是一个练习代码。复制它,改变它,给我另一个例子。只是帮助我理解为什么对数组的简单推送操作不起作用。

我的问题:如何将该变量的值推送到选项数组?

最佳答案

问题是在更新模型后保存模型。所以不是这个:

Estore.findOne({ "odds": "two" }).then(doc => {
console.log("xxx", doc.options);
doc.options.push(getid);

}).catch(err => {
console.log("error message :", err);
});

只需在 push() 之后添加 save:

doc.save()

完整的代码应该是:

 Estore.findOne({ "odds": "two" }).then(doc => {
console.log("xxx", doc.options);
doc.options.push(getid);
doc.save();
}).catch(err => {
console.log("error message :", err);
});

另外,options: [{ type: Schema.Types.ObjectId, ref: 'Xoption' }] 接受24位字符的ObjectId,之前不需要ObjectId,应该是这样的:

let getid = '5f997d78ace0547ba8c05646';

关于mongoose array push 没有保存我的条目并且违背了我使用 push 的简单愿望,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64579216/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com