在浏览器中轮询并从AJAX获取MQTT消息

初学者在这里。 好的,我试图完成一个简单的数据stream: MQTT-Data-source —> MQTT Broker —> NodeJS-MQTT-Client —>浏览器上的AJAX(每3秒轮询一次) 我希望能够获得MQTT消息,并在浏览器端的AJAX组件中显示它。 其次,在console.log(mqttMessage); ,我如何清除以前的消息? 因为在控制台上,我可以看到所有以前的数据以及新增的数据。 我在Express上使用mqtt.js作为我的nodejs mqtt支持。 //Server.js var mqtt = require('mqtt'); … … var getData = function() { mqttClient.subscribe(mqttTopic); mqttClient.on('message', function(topic, message) { mqttMessage = message.toString(); console.log(mqttMessage); }) return mqttMessage; } app.get('/pollData', function(req, res) { res.send(getData()); }); 而在一个简单的HTML页面上,我有: <script type="text/javascript" src="http://code.jquery.com/jquery-1.10.1.min.js"></script> <script> $(document).ready( function() { setInterval(function() […]

我需要一个mongoose模型或者直接从mongoose那里得到它

我有一个模型在文件models/Model.js是这样的: const mongoose = require('mongoose') const modelSchema = mongoose.Schema({ name: String }) const Model = mongoose.model('Model', modelSchema) module.exports = Model 然后,当我使用它,我像任何其他模块导入它: const Model = require('../models/Model') 我的问题是:如果每次我require一个模块的代码执行(在这种情况下,它会“运行”每次我导入Model.js ),是否更有效率(或至less更有意义)导入它喜欢这个?: const mongoose = require('mongoose') const Model = mongoose.model('Model')

节点JS护照 – 400注册不好的请求

我尝试在我的Web应用程序上实现一个注册,使用Node JS和Passport.js进行本地身份validation,但是当我在Insomnia上发布请求时(如Postman),出现此错误: Bad Request 我不明白,因为我遵循我在Google上find的教程来执行此操作。 这里是路由(auth.js): const passport = require('passport'); const router = require('express').Router(); //const UserController = require('../controller/UserController'); router // login .post("/login", passport.authenticate("local", function(req, res, next) { console.log(req); })) // logout .get('/logout', (req, res, next) => { req.session.destroy((err) => { res.redirect('/login') }) }) // signup .post("/signup", passport.authenticate("local-register"), (req, res) => { var userInfo = req.body; […]

TypeError:require(…).jsdom不是一个函数

我已经使用visual studio 2015进行nodejs web开发。 我有像nodejs下面的包。 身体分析器1.18.1 expression4.15.4 jquery 1.7.4 html 1.0.0 jsdom 11.2.0 和我的server.js是 var http = require('http'); var express = require('express'); var bodyParser = require('body-parser'); var jsdom = require('jsdom'); var path = require('path'); var port = process.env.port || 1337; var app = express(); app.use(bodyParser()); app.use('/bootstrap', express.static(__dirname + '/public/bootstrap')); app.use('/css', express.static(__dirname + '/public/css')); app.use('/jquery', express.static(__dirname […]

有条件地包含聚合stream水线阶段

我有一个函数,根据给定的参数给我一些命令。 但是,参数可以是空的,在这种情况下,我想单独离开$match 。 这是我现在的代码: if(req.query.status && typeof(req.query.status) == 'array'){ var match = { $in: req.query.status }; }else if(req.query.status){ var match = req.query.status; }else{ //when empty find all statuses var match = null; } Order.aggregate( { $match: { 'shop.nameSlug' : req.query.nameSlug, } }, { $unwind: "$status" }, { $match: { "status.status" : match } }, { […]

是否有es6箭头function的polyfill?

是否有es6箭头function的polyfill? 下面的代码在IE中抛出语法错误exception,是否有一个polyfill使IE支持箭头函数? var myFunc = ()=>{ alert('es6'); } myFunc(); 注意 :我不想使用任何transpiler 。 提前致谢

如何在运行时使用node-config覆盖configuration值?

我想在testing时重写一些值,特别是将http服务的重试设置为1(立即失败,不重试)。 我们的项目使用node-config 。 根据文档我可以用NODE_CONFIG envvariables覆盖: node myapp.js –NODE_CONFIG='{"Customer":{"dbConfig":{"host":"customerdb.prod"}}}' 那么我宁愿在我的testing中这样做,但不是所有的testing。 代码说你可以通过设置ALLOW_CONFIG_MUTATIONS来允许configurationALLOW_CONFIG_MUTATIONS 。 process.env.ALLOW_CONFIG_MUTATIONS = "true"; const importFresh = require('import-fresh'); importFresh("config"); process.env.NODE_CONFIG = JSON.stringify({httpServices:{integration:{enrich: {retryInterval: 1, retries: 1}}}}); expect(process.env.NODE_CONFIG, 'NODE_CONFIG not set').to.exist(); expect(process.env.NODE_CONFIG, 'NODE_CONFIG not set').to.match(/retryInterval/); expect(process.env.ALLOW_CONFIG_MUTATIONS, 'ALLOW_CONFIG_MUTATIONS not set').to.equal("true"); const testConfig = require("config"); console.dir(testConfig.get("httpServices.integration.enrich")); expect(testConfig.get("httpServices.integration.enrich.retryInterval"), 'config value not set to 1').to.equal(1); 结果: { url: 'https://internal-**********', retryInterval: […]

使用meteor与咖啡和玉:callback .call不是一个函数

我一直在用Coffeescript和Jade尝试Meteor。 而对于最基本的应用程序,我写了下面的代码。 main.coffee import './hello.coffee' import './main.jade' main.jade head title Chatter body h1 Welcome to Chatter! +hello hello.coffee import { Template } from 'meteor/templating' import { ReactiveVar } from 'meteor/reactive-var' import './hello.jade' Template.hello.onCreated helloOnCreated: -> @counter = new ReactiveVar 0 return Template.hello.helpers counter: -> Template.instance().counter.get() Template.hello.events 'click button': (event, instance) -> instance.counter.set instance.counter.get() + 1 […]

多行模板string没有换行符?

我有这一行代码: console.log(`now running each hook with name '${chalk.yellow(aBeforeOrAfterEach.desc)}', for test case with name '${chalk.magenta(test.desc)}'.`); 问题是我必须把它放在我的IDE中的多行,因为它适合(我走100列)。 当我把模板string放在多行上时,模板string将其解释为换行符,这不是我想要的。 所以我的问题是 – 我怎么能有多行的模板string代码,而不必用新的行字符logging?

graphql-tag / index没有导出成员'gql'

我将我的Angular应用程序REST后端转换为GraphQL。 我试图从graphql-tag导入gql。 我正在search和search,我的导入看起来像每个人都… import { Angular2Apollo } from 'angular2-apollo'; import { ApolloClient } from 'apollo-client'; import { gql } from 'graphql-tag'; 但是gql的红色下划线表示没有find。 当我运行ng serve我得到这个错误cmder … … / node_modules / graphql-tag / index“'没有导出成员'gql'。) 我已经运行了许多apollo和angular度npm安装,包括npm install –save graphql-tag ,试着安装任何我失踪的东西,似乎并不npm install –save graphql-tag我安装的东西。 我究竟做错了什么?