Tag: 对象

在redis中存储嵌套的JavaScript对象 – NodeJS

我最近从nodejs中的memcached切换到redis。 在node-memcached中我喜欢的是我可以将整个JavaScript对象保存在内存中。 可悲的是我不能在redis中这样做。 例如,我得到以下对象: var obj = { name: "Hello world!", author: "admin", user: { "yolololo" : { "id": "352asdsafaseww", "server": 5, "data" : { x: 1, y: 1, z: 50 } }, "yolol" : { "id": "358dsa", "server": 7 } } } 用3rd-Eden / node-memcached我可以这样做: memcached.set("obj", obj, 12345, function(err) { }); 接着 memcached.get("obj", function(err, […]

Nodejs,mongodb – 使用$ nin或$ in作为对象id或_id

我正在使用Nodejs , mongodb数据库。 我们可以像这样使用$nin Model.find({ uname : { $nin : ["sachin","saurav"] } }…. 上面的单词像uname和其他的法线元素。 但是对于对象id(_id),.. Model.find({_id : {$nin : ["6534767457dfgbyb23","wtvwt3wy5etvdh"] } } … 上面不给错误,显示正确.. var ObjectID = require('mongodb').ObjectID; var a = new ObjectID("sdfsdznfsdz"); var b=new ObjectID("sdfjwneufhq2rfwefsd"); Model.find({_id : { $nin : [a,b] } }… 以上也不给错误… 问题是,我不能像a,b,c,d手动写入… 我必须以某种正确的格式存储所有这些a,b,c,d …中的某些variables,并且必须这样做 Model.find({_id : {$nin : variable } } […]

javascript对象的元素是否按特定顺序初始化?

我有一个这样的function: parsers[1] = function(buf) { return { type: "init", name: buf.readUTF8String(), capacity: buf.readUInt32(), port: buf.readUInt16() }; } 我有任何保证, name , capacity和port将被一个接一个地初始化吗? 否则,将以错误的顺序读取缓冲区。 我当然可以回顾一下: parsers[1] = function(buf) { var ret = {type: "init"}; ret.name = buf.readUTF8String(); ret.capacity = buf.readUInt32(); ret.port = buf.readUInt16(); return ret; }

Javascript:函数链接

解决办法:不。 你不能这样做。 用&&​​链命令并用它来完成。 tl; dr:in random.function("blah").check() ,如果function("blah")返回false,我该如何忽略check() ? 或者这甚至有可能? 的背景: 好的,所以我很惊讶于代码。 但是我试图通过编码来让事情变得轻松一点,从而拖延。 而我的意思是,我的意思是微观上的。 所以基本上,我的整个项目是基于对象和插件。 (插件是包含一个对象的额外的.js文件,例如,afk.js看起来像这样: global.afk = function(){}; afk.check = function(){ … }; 通过加载该js文件,我可以访问afk对象及其中的所有函数。 可能效率不高,但它的工作原理和它确定什么function在做什么更容易。 回到拖延位。 因为我不知道哪些插件被加载,在一些共享的核心.js文件中,有这些条件语句: if (plugin.has("afk")) { afk.check(); }; if (plugin.has("afk")) { afk.check(); }; 然而,我感到无聊,使plugin.has()返回实际的对象,而不是“真”,所以我可以这样做: plugin.has("afk").check(); 按预期工作。 除非没有afk插件,这会引发“false没有方法检查”的明显错误。 那就是这样。 有任何想法吗? 另外,如果您有任何疑虑,请告诉我。 我知道我做了很多错误/效率低下的事情,而且在我弄明白的时候修正它们是很好的。

节点WriteFile不写我需要使用下划线的对象。 写入整个对象

我试图从我的对象中只select某些值写入文件。 但是这写的整个对象,除非我使用util.inspect它只是写作对象。 这应该写入我从对象中逐行select的值, var objectsToFile = function(objectsTotal){ objectsTotal = _.values(objectsTotal, function(value) { return value.objectTo.employeeName; }); objectsTotal = _.values(objectsTotal, function(value) { return value.employeeCurrent; }); objectsTotal = _.values(objectsTotal, function(value) { return value.employeePast; }); writeFile('objectsTotalet.csv', util.inspect(objectsTotal), function(err) { if (err) console.log(err); }); }; objectsTotal通过如下函数来实现: [ { objectTo: { employeeName: 'John', employeeID: '234234', DOB: '2333'}, employeeCurrent: true, employeePast: false}, […]

在Node.js中pipe理/stream式处理JavaScript对象

我试图把我的头围绕Node.jsstream,而不是我对JavaScript和节点很新,我真正得到的最后几种语言是Perl和PHP:-D 我读过Buffer / Streams文档@ nodejs.org,观看了James Halliday @ LXJS ,阅读了他的stream手册和Thorsten Lorenz 事件stream文章 。 我开始了解基础知识:) 我处理在RDF中序列化的数据(既不是JSON也不是XML)。 我设法获取数据(通过请求的实际代码),并使用rdfstore模块parsing成一个JS对象。 到目前为止,我这样做: s.createReadStream('myRDFdata.ttl').pipe(serialize()).pipe(process.stdout); 其中serialize()执行parsing序列化代码的工作。 我through模块使用接口到stream。 现在我有更多的方法(不是真正的函数声明,但我希望你明白了): getRecipe(parsedRDF) – >将parsing的RDF(作为一个JavaScript对象)告诉我如何使用它 createMeal(parsedRDF, recipe) – >从上面获取parsing的RDF和配方,并创build一个新的RDF对象 这个新对象需要序列化并发送到浏览器 (在现实世界中, getRecipe将不得不在浏览器中进行用户交互) 我喜欢通过pipe道链接在一起的想法,以便稍后增强代码时具有更高的灵活性。 但是我不想每次都把它序列化为一个RDF序列化,而只是发送JS对象。 根据我在文档中读到的内容,我可以使用stringify模块来获取每一步中的string,以便将其传送到下一步。 但: 这实际上是有道理的吗? 在我添加不必要的开销或这是可以忽略的? 我没有看到我怎么可以将parsedRDF赋予这两个方法的getRecipe必须先被调用的依赖项,输出也是createMealinput。 有模块可以帮助我吗? 这可能是我必须要求用户select最终的食谱,所以我可能需要发送东西到浏览器那里得到最终的答案。 当pipe道“等待”时,我可以在套接字上做这样的事吗? 我希望这显示我想要做什么,如果不是,我会尝试给更多的细节/改变。 更新:睡了之后,我想出了更多的东西: 如果有官方的序列化格式,将RDF等格式序列化为非标准格式可能没有意义。 所以,而不是使用stringify我会简单地通过一个正式的RDF序列化之间的步骤 这确实意味着我parsing/序列化每个步骤中的对象,这肯定会增加开销。 问题是我关心吗? 我可以扩展RDF模块,我使用从streamparsing和序列化到一个 我可以通过简单地将getRecipe一些信息添加到parseRDF来解决getRecipe和createMeal之间的依赖问题,这可以通过RDF轻松完成,而不会破坏原始数据模型。 但我仍然有兴趣知道我是否可以用pipe道处理这样的依赖

导出对象与函数NodeJs

导出对象{}与导出function 我正在开发一个练习应用程序,我遇到了这个问题什么时候需要导出一个对象而不是一个函数类? 场景示例: 我正在使用对象样式构build一个简单的authenticationmodule 。 // file auth.js module.exports = { login: function() { // code login }, logout: function() { // code logout }, register: function() { // code register } } 在这里我使用匿名函数样式 module.exports = function() { return { login: function() { // code login }, logout: function() { // code logout }, register: […]

Node.js – parsing简单的JSON对象和访问键和值

我是Node新手,并努力访问一个简单的JSON对象。 我的request.body将具有类似于以下的JSON内容: { "store_config": [ { "name": "hello", "name2": "world" } ] } “store_config”值将始终存在,但其中的键和值可以是任何值。 我如何迭代通过键和值访问每个? 我也想以asynchronous的方式处理每一个。 欣赏任何想法或方向。 UPDATE console.log(typeof(request.body)); 返回: Object parsedBody = JSON.parse(request.body); 收益: SyntaxError: Unexpected token o at Object.parse (native) 更新2 – 进一步debugging: 当我尝试遍历数组时,只有一个值: request.body.store_config.forEach(function(item, index) { console.log(index); console.log(request.body.store_config[index]); }); 收益: 0 { name: 'hello', name2: 'world' }

如何使用Node.js分配70个请求/秒的唯一优惠券代码

当我们启动我们的交易(我们每天多次启动20多笔交易)时,我运行一个优惠券网站,看到50-70个请求/秒。 当交易生效时,我们的用户按下一个button来为特定产品索要优惠券,该优惠券通过ajax https请求提供唯一的优惠券代码。 每张优惠券只能兑换一次。 我的问题是,在这样的时间stream量这么高,相同的优惠券可以分配给多个用户。 这是不好的,因为只有其中一个实际上可以兑换优惠券,而另一个用户体验不佳。 我将所有优惠券信息存储在由IBM Bluemix托pipe的node.js服务器上的内存中的对象上。 我想这可以让我快速处理这些请求。 我如何存储优惠券信息: global.coupons = {}; //the number of coupons given for each product global.given = {}; /* Setting the coupon information */ //….I query my database for the products to be given today for(var i = 0; i < results.length; i++){ var product = results[i]; //add only […]

在/从MongoDB中存储和检索JavaScript对象

我目前正在使用node-mongo-native驱动程序使用node.js和MongoDB。 我testing了一下使用Mongo控制台存储和检索JS对象。 我想通了,如果我存储一个包含函数/方法的对象,方法和函数也将被存储在集合中。 这很有趣,因为我认为函数不能存储在MongoDB中(除了system.js集合,正如Mongo文档所build议的那样)。 它不仅存储方法,而且实际上是对象的整个原型链的每个方法和成员。 除此之外,我不喜欢这种行为,认为这是不直观的,我不能拥有它。 我正在pipe理Mongo集合中的用户。 要做到这一点,我有一个用户对象包含用户的每个实例作为原型的所有用户方法。 用户对象本身只包含用户属性。 如果我将用户存储在Mongo集合中,我只想存储用户对象的属性。 没有原型成员,特别是没有原型方法。 目前我没有看到如何干净地做到这一点。 我想的选项可能是: 使用foreach和hasOwnProperty创build一个浅拷贝并将其存储在集合中。 为每个包含所有对象属性的用户添加一个数据属性,并可将其存储在集合中。 刚才我想起了这个:我也可以将所有原型属性设置为不可枚举,这样可以防止它们存储在集合中。 但是,反过来,我也遇到了相同的问题:从集合中加载用户时。 AFAIK没有办法在JavaScript创build后改变对象原型。 当Mongo实例化从集合中检索到的对象时,也无法指定要使用的原型。 所以基本上我总是得到使用Mongo从Objectinheritance的对象。 据我可以告诉我有2个选项从这一点恢复一个可用的用户对象: 创build一个从Userinheritance的新对象,并将结果对象上的每个属性复制到新创build的对象。 (与存储机制1和3兼容) 创build一个从Userinheritance的新对象,并将结果对象作为数据属性存储在新创build的对象上。 (兼容存储机制2) 我的假设,特别是关于指定查询结果原型的可能性,是否正确? 什么是正确的做法,为什么? 我当然不是第一个使用node.js在MongoDB中存储和复制对象的人。 目前我会用2/2的方法去。 我不是很喜欢它,但是它是最有效率的,也是唯一一个可以和API一起干净利落的工具。 不过,我更愿意听到API实际上并没有错,但我不知道如何正确使用它。 所以,请赐教:)