InvalidKey in MongoDB and Node.js -
i have file has key ip "10.11.190.14:cgi6web-1"
: . when try insert file in mongodb, following error:
error: key 10.11.190.14:cgi6-web-1 must not contain '.' @ error (unknown source).
i dont have permissions change file , there work around write file mongodb ip key.
my code follows:
var mongoclient = require('./lib/mongodb').mongoclient; var file = require (__dirname + '/functions.json'); mongoclient.connect('mongodb://phx8b03c-fb1d', function (err, client) { if (err) throw err; client.createcollection('lbtopology' , function (err, collection) { if (err) throw err; collection.insert(file, 'lbtopology' , function (err) { if (err) throw err; client.close(function (err) { if (err) throw err; console.log('done'); }); }); }); })
can please me this?
you possibly change "pools"
as in file array
, moving key it's property of each inner object
:
{ "pools": [ { "_key": "10.2.90.83: cgi5-web-1-80", "tags": "dc=phxodbpool=cgi5-web-1-80", "oname": "10.2.90.83: cgi5-web-1-80", "pname": "syi-web", "oid_suffix": [ 19 ] }, // ... ] }
you can use object.keys()
, .map()
accomplish this:
var file = require (__dirname + '/functions.json'); file.pools = object.keys(file.pools).map(function (key) { var pool = file.pools[key]; pool._key = key; return pool; });
[edit] lbs
bit more interesting each object has pnames
needs same treatment. also, since each item under pnames
number
, you'll have create object
hold key.
file.lbs = object.keys(file.lbs).map(function (key) { var lb = file.lbs[key]; lb._key = key; lb.pnames = object.keys(lb.pnames).map(function (pkey) { return { key: pkey, value: lb.pnames[pkey] }; }); return lb; });
Comments
Post a Comment