在同一个提取POST API调用中返回JSON

我目前有一个基于Node.js的Express框架构build的Web应用程序。 我现在正在构build一个需要执行用户login的React Native应用程序。 为此,我创build了一个mongo-helpers.js文件,它将简单地执行api调用localhost:3000 / api并返回JSON。 到目前为止,我没有任何问题进行GET调用和接收数据,但是这是我的问题,我想要做什么: 目标 :按下loginbutton(在React Native应用程序中),调用localhost:3000 / api / login,将username和password传递到fetch API POST请求的body中。 如果用户login,则发回用户的Mongo文档。 问题 :虽然我能够发出API Post请求并成功login用户,但我无法用res.json(user)发送用户的Mongo文档。 这是我的代码: Express WEB APP: routes / api / api.js // POST and login user router.post('/login', (req, res) => { user.findOne({name: req.body.name, password: req.body.password}) .then((user) => { console.log(user); res.json(user) }) .catch((error) => res.json(error)) }); 反应本机应用程序: mongo-helpers.js […]

国外时间到当地时间

我想把外国时间转换成当地时间。 我在Europe/London得到一个date和时间。 目前我正在使用时区 – 时区让我的代码工作,但它给了我一个错误的输出。 resultDate = new moment('2017-06-30T22:10:00').tz('Europe/London').format('YYYY-MM-DD HH:mm:ss'); 我认为代码认为,dateinput已经在当地时间,我需要将其转换为Europe/London ,这将产生一个本地的结果,因为我想要的是实际转换国外的时间本地时间。 总之,由于我目前住在Asia/Manila ,所以我预计date和时间( 2017-06-30T22:00:00 ),我预计它会提前7个小时( 2017-07-1T05:00:00 ) ,提前7个小时到伦敦。 但是我得到2017/06/30 15:00:00 +0100作为我的结果。 利用我的代码中看到的'Europe/London'或'Asia/Manila'这样的信息,我有办法做到这一点吗?

Node.js集群错误

您好,我是非常新的node.js和JavaScript,我想创build一个culter.js与nodejs集群模块,在我的if语句结束时,我打电话server.js启动应用程序。 cluster.js const cluster = require('cluster'); const cpuCount = require('os').cpus().length; const startServer = require('./server'); if (cluster.isMaster) { for (let i = 0; i < cpuCount; i += 1) { cluster.fork(); } cluster.on('exit', () => { cluster.fork(); }); } else { return startServer; } server.js const fs = require('fs'); const path = require('path'); const express = […]

发布/订阅可靠消息:Redis VS RabbitMQ

背景 我正在制作一个发布/订阅典型应用程序,发布者向消费者发送消息。 发布者和消费者在不同的机器上,它们之间的连接偶尔会中断。 目的 这里的目标是确保无论连接发生什么事情,或者机器本身,发布者发送的消息总是被消费者接收。 消息的sorting不是必须的。 问题 根据我的研究,RabbitMQ是这种情况下的正确select: Redis将RabbitMQ作为Logstash和elasticsearch之间的数据代理/消息传递系统 然而,尽pipeRabbitMQ有一个关于发布和订阅的教程,但本教程不会将我们介绍给持久队列,也不会提到确认我认为是确保消息传递的关键。 另一方面,Redis也能做到这一点: http://abhinavsingh.com/customizing-redis-pubsub-for-message-persistence-part-2/ 但我找不到任何正式的教程或示例,而我目前的轻描淡写导致我相信,持久的队列和消息确认必须由我们来完成,因为Redis主要是内存数据存储而不是像RabbitMQ这样的消息代理。 问题 对于这个用例,哪个解决scheme最容易实现? (Redis解决scheme还是RabbitMQ解决scheme?) 请提供一个与您认为最好的例子的链接!

使用pg-promiselogging特定的postgresql查询

我使用pg-promise包与Nodejs来执行PostgreSQL查询。 我想看看执行的查询。 只有特定的查询,比如说,我只想debugging一个查询。 我可以看到,一个推荐的方法是使用pg-monitor来捕获事件并按照这里在示例文档中提到的那样logging它们。 没有使用pg-monitor ,是否有一个简单的方法来打印执行准备好的查询。 我无法在文档中看到它。 例: db.query("SELECT * FROM table WHERE id = $/id/", {id: 2}) 如何打印这个查询产生? SELECT * FROM table WHERE id = 2

为什么在给定代码中出现错误“EACCESS localhost”,究竟是什么意思?

var express=require('express'), morgan=require('morgan'); var host='localhost'; var port=3000; var app=express(); app.use(morgan('dev')); app.use(express.static(__dirname+'/public')); app.get('/',function(req,res,next){ res.send('index.html'); }) app.listen(host,port,function(){ console.log("The server is listning on port : "+port+" Host : "+host); });

维护上下文

我试图保持在沃森对话的上下文,但它不工作..我已经试过这个答案 ,但它没有奏效。 我正在尝试将bot整合到html中。 我在对话configuration中试过这个: var payload = { workspace_id: workspace, context: {}}; if (req.body) { if (req.body.input) { payload.input = req.body.input; } if(req.body.context) { payload.context = req.body.context; }} 而这个代码在html / javascript中: var payload = {}; var context = {}; function callWatson(){ alert("watson"); $.ajax({ type: 'POST', dataType: 'JSON', contentType: "application/json", url: '/api/message', data: JSON.stringify(payload) }).done(function (json) […]

从外面调用函数

我正在使用这个代码来创build一个侦听特定端口和IP的服务器 function notifier() { var net = require('net'); var host = 'xxxx'; var port = xxxx; var server = net.createServer(function (socket) { socket.on('data', function (data) { console.log("data " + data.toString()); }); socket.on('close', function (data) { console.log('closed'); }); socket.on('error', function (err) { console.log(err); }); }); function startServer() { server.listen(port, host, function () { console.log('started'); }); } […]

从systemd节点应用程序生成的Shell脚本不会编辑etc文件

我有一个systemd服务,在启动时启动一个Node应用程序。 Node应用程序使用child_process.spawnSync启动一个使用sed编辑/etc/wpa_supplicant/wpa_cli-actions.sh的shell脚本。 如果我从命令行手动启动Node应用程序,但是在由systemd启动应用程序时没有正确编辑wpa_cli-actions.sh文件,则该文件会被正确编辑。 我的系统服务文件是基于另一个启动类似的服务,所以我不知道我在做什么错了。 我在journalctl输出中没有看到与此有关的任何错误。 以下是我的服务文件。 [Unit] Description=The Edison status and configuration service After=mdns.service [Service] ExecStart=/bin/su root -c 'node /usr/lib/config-server/app.js' Restart=always RestartSec=10s StandardOutput=journal StandardError=journal SyslogIdentifier=edison-config PrivateTmp=no Environment=NODE_ENV=production User=root Group=root [Install] WantedBy=default.target

来自json数组的使用nodejs的单个值

所以我有这个数据从stringify(doc)输出 { "id": "8467fdae-c38c-4b6e-9492-807d7c9eb97e", "message": "send to nodejs" } 但我不知道如何继续从它获得单个值,例如消息。 任何帮助将不胜感激,因为我尝试了不同的方法,他们似乎没有工作