#javascript #node.js #mongodb #javascript-objects
Вопрос:
Ниже приведен мой код для обновления поля веб-сайта в Mongodb с помощью NodeJS, однако вместо обновления он добавляет новое поле в мою базу данных.
let { ObjectId } = require('mongodb');
async get(id) {
if (!id) throw 'You must provide an id to search for';
const restaurantsCollection = await restaurants();
const res = await restaurantsCollection.findOne({ _id: id });
if (res === null) throw 'No dog with that id';
res._id = res._id.toString().replace(/ObjectId("(.*)")/, "$1")
return res;
}
async rename(id, newWebsite) {
if (!id) throw 'You must provide an id to search for';
if (!newWebsite) throw 'You must provide a name for the restaurant';
let newid = ObjectId(id);
const restaurantsCollection = await restaurants();
const updatedInfo = await restaurantsCollection.updateOne(
{ _id: newid },
{ $set: {website:newWebsite} }
);
if (updatedInfo.modifiedCount === 0) {
throw 'could not update restaurant successfully';
}
return await this.get(newid);
}
};
Ниже приведен результат, который я получаю:
{
_id: new ObjectId("6157825a4dcae5beb8f759bf"),
name: 'Hey',
location: 'New York City, New York',
phoneNumber: '123-456-7890',
website: 'http://www.hey.com',
priceRange: '$$',
cuisines: [ 'Cuban', 'Italian' ],
overallRating: 3,
serviceOptions: { dineIn: true, takeOut: true, delivery: false },
newWebsite: 'http://www.hi.com'
}
Вместо того, чтобы веб-сайт был заменен с hey.com чтобы hi.com это просто добавляет новое поле, что я делаю не так?
Комментарии:
1. Монго не добавляет поле под названием «Новый веб-сайт», это вы. Но не в том коде, который вы показали. Поскольку ключ совпадает с именем вашей переменной, это где-то синтаксическая ошибка сокращения объекта.
2. Попробуйте войти в
newWebsite
систему и проверьте значение, введите. Также установите некоторое жестко заданное значение и проверьте. Экс :{ $set: {website:"some hardcoded value"} }
Ответ №1:
Вместо использования { $set: {website:newWebsite} }
Это должно быть просто {website:newWebsite}
Комментарии:
1. Я пробовал, не получается.