提问者:小点点

TypeError:无法读取未定义的Graphql、Nodejs的属性“for each”


我的代码出现以下错误消息:

Field.Arguments.Foreach(collectNode);^

TypeError:无法读取未定义的属性“for each”

newPedido: (root, {input}) =>{
            const newPedido = new Pedidos({
                pedido: input.pedido,
                total: input.total,
                fecha: new Date(),
                cliente: input.cliente,
                estado: "PENDIENTE"
            });

            newPedido.id = newPedido._id;
            return new Promise((resolve, object) => {
                input.pedido.forEach(pedido => {
                    Productos.updateOne({_id : pedido.id}, 
                    { "$inc":
                        {"stock" : -pedido.cantidad}
                            }, function(error) {
                            if(error) return new Error(error)
                        }
                    )
                });

                newPedido.save((error) => {
                    if(error) rejects(error)
                    else resolve(newPedido)
                });
            });
        }

共1个答案

匿名用户

在对input.pedito进行迭代之前,请检查其是否存在并且是否为数组:

newPedido: (root, {input}) =>{
            const newPedido = new Pedidos({
                pedido: input.pedido,
                total: input.total,
                fecha: new Date(),
                cliente: input.cliente,
                estado: "PENDIENTE"
            });

            newPedido.id = newPedido._id;
            return new Promise((resolve, object) => {
                if (input.pedito && input.pedito.length > 0) {
                    input.pedido.forEach(pedido => {
                        Productos.updateOne({_id : pedido.id}, 
                        { "$inc":
                            {"stock" : -pedido.cantidad}
                                }, function(error) {
                                if(error) return new Error(error)
                            }
                        )
                    });
                }

                newPedido.save((error) => {
                    if(error) rejects(error)
                    else resolve(newPedido)
                });
            });
        }