2016-05-21 1 views
1

Проблема в том, что при запуске сервера я получаю ошибку, указанную ниже. Я довольно новичок в JavaScript, это связано с различием в версиях JavaScript или Nodejs? Я также попытался изменить обновление var, чтобы иметь [] вместо {}, но который запускает сервер, но тогда он не будет обновлять/удалять данные из нашего MongoDB. Если это помогает, «Рецепты» в Recipes.findOneAndUpdate - это схема Mongoose.Ошибка синтаксиса javascript в сервере узла

Вот функция от server.js:

app.post("/updaterecipe", function(req, res) { 
var id = req.body.recipeID; 
console.log("Updating recipe " + id); 
var recipeName = req.body.recipeName; 
var categoryID = req.body.categoryID; 
var recipeInstructions = req.body.recipeInstructions; 
var ingredientIDs = req.body.ingredientIDs; 
var options = {new: false}; 
var update = {recipeName, categoryID, recipeInstructions, ingredientIDs}; 
console.log(update); 
Recipes.findOneAndUpdate({recipeID: id}, update, options, function(err) { 
    if (err) 
    { 
     console.log("Unable to update"); 
     console.log(err); 
    } 
}); 
res.send(update); 
}); 

И ошибка:

var update = {recipeName, categoryID, recipeInstructions, ingredientIDs}; 
         ^

SyntaxError: Unexpected token , at exports.runInThisContext (vm.js:73:16) at Module._compile (module.js:443:25) at Object.Module._extensions..js (module.js:478:10) at Module.load (module.js:355:32) at Function.Module._load (module.js:310:12) at Function.Module.runMain (module.js:501:10) at startup (node.j

+0

какая версия узла? – JordanHendrix

+0

Версия узла v0.12.1 –

+1

обновите его, вы не можете использовать этот синтаксис в старых версиях узла, перейдите к 6+ – JordanHendrix

ответ

2

Это ES6 свойство стенографии:

var update = {recipeName, categoryID, recipeInstructions, ingredientIDs}; 

Источник: http://es6-features.org/#PropertyShorthand

Просто обновление до последней версии узла, и вы должны быть хорошо идти.

+0

Обратите внимание, что это заменит документ OP в коллекции. – styvane

0

Я думаю, что есть проблема с JSON. Вы пытаетесь создать недействительный объект JSON.

Следующее изменение на var update должно сделать трюк.

var update = { 
     "recipeName": recipeName, 
     "categoryID": categoryID, 
     "recipeInstructions": recipeInstructions, 
     "ingredientIDs": ingredientIDs 
    }; 
+1

пока это работает, то, что он делает, прекрасно в es6, но его не поддерживается в его версии узла – JordanHendrix

+0

Полезно знать, спасибо Jordan. – C0reTex

0

Ваш документ обновление не действует в ES5, потому что, как уже упоминалось here, в стенографии имена свойств является новым в (ES6), поэтому вам нужно указать «ключ» 's имя или перейти на Версия Nodejs, использующая ES6. При этом вам также необходимо использовать оператор обновления $set, потому что если вы не используете $ -модификатор, ваш запрос будет выполнять замену полного документа, заменив соответствующий документ на значение update.

var update = { 
    "$set": { 
     "recipeName": recipeName, 
     "categoryID": categoryID, 
     "recipeInstructions": recipeInstructions, 
     "ingredientIDs": ingredientIDs 
    } 
}; 

Тогда:

Recipes.findOneAndUpdate({ recipeID: id }, update, options, function(err) { 
    if (err) 
    { 
     console.log("Unable to update"); 
     console.log(err); 
    } 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^