gpt4 book ai didi

javascript - 更新数组对象会创建一个新的空对象

转载 作者:行者123 更新时间:2023-11-28 07:00:32 25 4
gpt4 key购买 nike

我有一个订单数组,其中包含用户 ID、金额和订单本身。每个用户一次只能有一个订单,但我正在尝试添加一个选项来编辑您的订单。我创建了一个应该执行此操作的方法:

'click .edit': function (event) {
var order = $('#editOrder').val();
var price = $('#editPrice').val();
Meteor.call('changeOrder', Router.current().data()._id, Meteor.userId(), order, price);
Session.set("editing", false);
},
changeOrder: function (id, user, order, amount) {

Polls.update({_id: id, 'Orders.User': user}, {$set: {'Orders.$': {
User: user,
Order: order,
Amount: parseFloat(amount)
}}});
},

此方法实际上有效,但问题是每次我编辑订单时,它都会创建一个具有相同用户 ID 和空订单和金额属性的新对象。
老实说,我不知道什么可能导致更新功能插入无效数据。

下面是带有额外空订单的 Poll 结构的示例:

{
"_id" : "4wGAPfxCvKfH4L8JL",
"Company" : "FirmaTest",
"Restaurants" : [
"Trylinka",
"Da Grasso",
"Faster",
"Green Way",
"Telepizza",
"Piramida"
],
"Expires" : ISODate("2015-08-24T08:26:00.791Z"),
"Votes" : {
"Trylinka" : 1,
"Da Grasso" : 0,
"Faster" : 2,
"Green Way" : 3,
"Telepizza" : 0,
"Piramida" : 0
},
"Voted" : [
"TfQM7954a5SHoR9os"
],
"Winner" : "Green Way",
"Orders" : [
{
"User" : "TfQM7954a5SHoR9os",
"Order" : "Some chicken",
"Amount" : 15
},
{
"User" : "TfQM7954a5SHoR9os",
"Order" : null,
"Amount" : NaN
}
],
"Ordered" : [
"TfQM7954a5SHoR9os"
]
}
<小时/>

已解决

结果我触发了位于同一页面的提交表单。尽管我调用的事件不是“表单提交”,但其中有一个表单,因此提交仍然完成。此外,我在表单提交和按钮触发器中使用了相同的变量名称,因此插入方法仍然执行。
感谢您的回答,但事实证明问题出在其他地方,完全是我的错:)

最佳答案

您是否可以使用字符串而不是 ObjectID 来查询 _id

尝试将 id 转换为 ObjectID:

new Meteor.Collection.ObjectID(valuefromhtml)

所以你的代码将是:

Polls.update({
_id: new Meteor.Collection.ObjectID(id),
'Orders.User': user
}, {
$set: {
'Orders.$': {
User: user,
Order: order,
Amount: parseFloat(amount)
}
}
});

关于javascript - 更新数组对象会创建一个新的空对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32178404/

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