在dynamodb预期的约束,以防止重复

我是DynamoDB的新手,我无法在node.js和DynamoDB中使用以下scheme: 我想插入一个用户在用户表中,但我不希望这个成功,如果用户的电子邮件地址已经存在。 以下代码能够成功插入新用户: var item = { id: { S: uuid.v4()}, email: { S: 'my@email.com' } }; dynamodb.putItem({ TableName: 'user', Item: item, Expected: { email: { Exists: false } } }, function (err, data) { if (err) { return callback(err); } callback(); }); 我认为预期值会通过引发ConditionalCheckFailedException错误来防止用户表中的重复电子邮件地址。 不是这种情况; 上面的代码将一致插入重复的电子邮件。 我尝试添加“ID”作为额外的预期字段,但这并没有改变行为。 当我修改代码的时候,我得到一个ConditionalCheckFailedException,所以ID是固定的,而不是生成的UUID; var item = { id: { S: […]

使用Node.js和Socket.io将更改推送到所有客户端

我有一个使用套接字的工作服务器。 我的服务器端代码如下所示: io.sockets.on('connection', function(socket) { socket.emit('status', { counter: count }); }); 在这个例子中,我只是每分钟递增1。 当计数器更新时,我想将当前计数发送给所有客户端。 我的index.html文件如下所示: <script> var socket = io.connect('http://localhost'); socket.on('status', function (data) { console.log(data); }); </script> 当我启动我的服务器时,我可以看到第一个数据发送到客户端{'counter': 0} ,但是当计数器的值增加时,我看不到客户端上正在更新的新值。 为什么没有新的数据被发送到我的客户?

在连接mongo和mongoose的mongodb中存储会话

当我尝试使用mongodbconfigurationexpress.js会话存储时,我得到了错误。 我使用机车为我的框架,并configurationmongoose。 在我的初始化程序目录02_mongoose.js我有这个。 module.exports = function() { mongoose.connect('mongodb://localhost:27018/basbac'); mongoose.model('User', UserSchema); } 我知道我有一个连接到数据库,因为我可以拉我的用户在我的控制器。 DeveloperController.show = function() { var self = this; var user = mongoose.model('User'); user.find().exec(function(error, users) { if(error) { console.log(error); } else { self.res.json({response: { id: self.param('id'), api: self.param('api'), users: users } }); } }); } http://localhost:3000/developer/test/?api=hhfkgjhukdsfkjhvsduhvudhcsiudvlskejfbk { response: { id: "test", api: "hhfkgjhukdsfkjhvsduhvudhcsiudvlskejfbk", users: […]

NodeJS> req.query正在返回不正确的数据

我发送一个JSON(从客户端)到这样一个NodeJS服务器: $.ajax({ type: "POST", dataType: "jsonp", url: "www.xyz.com/save", data: { designation: "Software Developer", skills: [ "", "ASP.NET", "PHP", "", "", "", "NodeJS", "", "" ] } }); 在接收端(即NodeJS服务器),我打印JSON(与console.log)如下: save = module.exports = {}; save.setup = function( app ) { app.get( '/save', function(req, res) { console.log(req.query); }); } 问题是它打印以下内容 : { designation: "Software Developer", skills: [ […]

Zombie.js – 下载文件支持

我试图在Zombie.js中处理下载提示,通过API查看我没有看到任何指示如何这样做。 基本上我想要做的是浏览通过身份validation所需的网站,然后单击网站上的button(无href),然后自动进行下载。 下载的文件将被重命名并发送到指定的文件夹。 有没有办法做到这一点?

无法掌握callback的时机

我知道这已被问了一百万次,但我真的想分解asynchronous的Javascript函数和callback,而不是点击。 我正在看马克斯·奥格登的节点艺术的例子是这样的: var fs = require('fs') var myNumber = undefined function addOne(callback) { fs.readFile('number.txt', function doneReading(err, fileContents) { myNumber = parseInt(fileContents) myNumber++ callback() }) } function logMyNumber() { console.log(myNumber) } addOne(logMyNumber) 打破这一点,我明白,当addOne被调用时,它首先启动fs.ReadFile ,这可能需要一些时间才能完成。 我不明白的是,代码不会继续callback()并执行logMyNumber (在添加myNumber之前)吗? 什么是阻止callback()运行之前它应该,这是整个点? 或者,直到doneReading发生, callback()才会发生? 我们是否应该假设在fs.readFile “完成”时会调用fs.readFile ? 谢谢大家的耐心帮助我解决这个非常常见的问题:)

Mongoose与Supertest打开连接问题

我无法运行多个Supertest / Mochatesting,因为我得到一个错误Error: Trying to open unclosed connection. – 我发现这个post提出循环和检查连接状态。 想知道是否有更好的方法? 也许是最近Supertestjoin来处理这个问题的东西。

使用包含空字节的string创build奇怪的Date()

我知道JavaScript不会终止像C或C ++这样的string,但我遇到了一个我无法解释的情况。 看下面的代码(在Node.js v0.10.5中执行): > new Date('123') Fri Jan 01 123 00:00:00 GMT+0100 (CET) // UNIX epoch : -58285702800000 > new Date('123\056') Fri Jan 01 123 00:00:00 GMT+0100 (CET) // UNIX epoch : -58285702800000 > new Date('123\0456') Tue Jun 01 123 00:00:00 GMT+0200 (CEST) // UNIX epoch : -58272660000000 > new Date('123\0567') Thu Jul 01 […]

通过XHR从客户端发送blob数据到NodeJS服务器

我想从JA客户端发送一个blob数据到NodeJS服务器。 现在我有这个客户端代码:[…] recorder.exportWAV(function(blob){audioObj = blob;}); var formData = new FormData(); formData.append("operation", "addMessage"); formData.append("msg", audioObj); var xhr = new XMLHttpRequest(); xhr.open("POST", "http://localhost:8080/sendRecord", true); xhr.onreadystatechange = function(){ if(xhr.readyState==4 && xhr.status==200){ // get response from server } } xhr.send(formData); 我使用一些JS库来logging来自集成麦克风的audio,最后我有一个audio对象是一个blob对象。 而这个si node.js服务器,我想调整接收数据。 var http = require('http'), url = require('url'); var app = http.createServer(function(request, response){ var path = url.parse(request.url).pathname; […]

为什么这个MongoDB连接不能在grunt脚本中工作?

如果我运行这个使用节点它打印“连接到数据库”: var MongoClient = require("mongodb").MongoClient; MongoClient.connect("mongodb://localhost/db1", function(err, db) { if (err) { throw err; } console.log("Connected to Database"); db.close(); }); 但是,如果我试图用一个Grunt任务来运行它,它什么都不做,并且默默无闻。 module.exports = function(grunt) { return grunt.registerTask("task", "subtask", function() { var MongoClient = require("mongodb").MongoClient; return MongoClient.connect("mongodb://localhost/db1", function(err, db) { if (err) { throw err; } console.log("Connected to Database"); db.close(); }); }); }; 谁能告诉我为什么这应该是,也许提供一个解决方法?