Actualmente tengo una base de datos que contiene 5 entradas por documento en mi mongoDB. Aquí hay un ejemplo
Me gustaría actualizar mis documentos en mi base de datos con más campos e información. Actualmente lo estoy haciendo con el siguiente código.
NFT.findOne({ "name": name }, (err, value) => { if (err) { console.error(err) } if (!value) { console.log('no value') let newNFT = new NFT({name, slug, symbol, description, verifiedStatus, bannerUrl, logoUrl, floorPrice, stats, social}) newNFT.save() } else { let newNFT = new NFT({name, slug, symbol, description, verifiedStatus, bannerUrl, logoUrl, floorPrice, stats, social}) NFT.replaceOne({"name": name}, newNFT, {returnDocument: "after"}) } })El motivo de esta pregunta es que ejecuté console.log(NFT.find({"name": name}) y obtuve un objeto con todos los campos; sin embargo, no parecen actualizarse en mi base de datos en línea. Debido a que extrae información de la base de datos web, sé que estoy conectado, pero simplemente no se actualizan. ¿Qué estoy haciendo mal aquí?
save() devuelve una Promise , debe await .
Además, intente cambiar el código para actualizar su valor existente:
NFT.findOne({ name }, async (err, value) => { if (err) { console.error(err); } if (!value) { // Create new NFT let newNFT = new NFT({ name, slug, symbol, description, verifiedStatus, bannerUrl, logoUrl, floorPrice, stats, social, }); await newNFT.save(); } else { // Update existing NFT value.name = name value.slug = slug value.symbol = symbol value.description = description value.verifiedStatus = verifiedStatus value.bannerUrl = bannerUrl value.logoUrl = logoUrl value.floorPrice = floorPrice value.stats = stats value.social = social await value.save(); } });