NodeJS & Mongoskin, не могу сделать простое обновление.Передаваемый аргумент должен быть 12 байтов или 24 шестнадцатеричной строки - PullRequest
6 голосов
/ 05 ноября 2011

Использование mongoskin .

Я пытаюсь выполнить простое обновление и продолжаю получать сообщение об ошибке:

Ошибка: переданный аргумент должен быть единственнымСтрока из 12 байтов или строка из 24 шестнадцатеричных символов в шестнадцатеричном формате

Другой код, который я пробовал:

var mongo = require('mongoskin'),
    store = mongo.db(MONGO_DB_ADDESS + ':' + MONGO_DB_PORT + '/' + MONGO_DB_NAME + '?auto_reconnect=false');

session._id = 4eb5444d39e153e60b000001;

store.collection('sessions').updateById({_id : session._id}, {$set: status_obj}, {upsert : false, multi : false, safe : false}, function() { ... });

store.collection('sessions').updateById(session._id, {$set: status_obj} );      

Даже пытался:

store.collection('sessions').update( {'_id': session._id}, {$set: {"status":'unavailable'}} );    

Любая помощьпризнателен!

Спасибо, Fyi, я могу сделать обновление через Монго, используя cli просто отлично:

db.sessions.update( {'_id': ObjectId('4eb5444d39e153e60b000001')}, {$set: {"status":'unavailable'}} );

Ответы [ 4 ]

17 голосов
/ 05 ноября 2011
store.collection('sessions').updateById(session._id.toString(), {$set: status_obj} ); 

Добавление .toString () окончательно разрешило это для меня.

3 голосов
/ 05 ноября 2011

Была похожая ошибка с Mongoose, оказалось, что мой идентификатор был неверным, но, возможно, эта функция проверки может помочь вам:

function validate_id(id) {
  return !(id !== null && (id.length != 12 && id.length != 24));
}
1 голос
/ 20 января 2015

поместите это в корень вашего JavaScript

ObjectID = require('mongoskin').ObjectID;

collection.updateById(new ObjectID(song._id), <json>, <callback>);

переводит _id, который вы получаете в узле, в формат, необходимый для монго

0 голосов
/ 24 апреля 2017

Вы также можете попробовать использовать trim() для удаления пробелов до или после строки, что приведет к той же исходной ошибке:

store.collection('sessions').updateById(session._id.toString().trim(), {$set: status_obj} ); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...