Tag: callback

使用Node-JS应用callbackdevise模式

我相信我理解一个基本forms的callback的devise模式。 然而,我不知道是否以及如何将这种devise模式应用于这种更复杂的情况。 我正在编写一组JavaScript函数用于服务器端。 如果可能的话,这些函数必须返回从本地数据库获取的数据,否则返回来自外部API的数据。 总之,我想要做的是: //dataProvider.js function DataProvider (dbCredentials, apiCredentials) { DB = require('./dbStuff'); API = require('./apiStuff'); this.db = new DB(dbCredentials); this.api = new API(apiCredentials); this.getSpecificData = getSpecificDataWrapper(this.db, this.api); } function getSpecificDataWrapper(db, api) { return function (extraQueryInfo) { var result = db.genericGetFunc(specificDBQuery); if (!satisfyingResult(result)) { result = api.genericGetFunc(specificAPIQuery); return result; } } 当从主app.js文件调用此函数,我想这样做dataProviderInstance.getSpecificData(extraQueryInfo) 。 现在我有一个类似的结构设置为执行查询的数据库和API函数。 […]

从nodejs后端发送callback到前端

我有一个fileUpload(用NodeJS制作),我想在{{upload.message}}中的html中显示上传的成功。 我用AngularJS实现了它,但是没有奏效。 我究竟做错了什么? HTML <form enctype="multipart/form-data" action="/upload" method="POST"> <div class="form-group"> <input type="file" name="file" /> <p></p> <input type="file" name="file" /> <p></p> <input type="file" name="file" /> <br> <br> <input type="submit" value="Upload File" name="submit" class="btn btn-primary"> </form> <span>{{upload.message}}</span> </div> 的NodeJS router.post('/upload', function(req,res){ upload(req,res,function(err) { var fileNames = []; req.files.forEach(function(element){ fileNames.push(element.filename); }) console.log('Selected Files: ', fileNames); if(err){ res.end("Error: '" […]

如何使用microapps Node.js模块处理Shopify的API调用限制

我一直在敲我的头,find一个答案,我只是不知道。 我正在使用microapps的Shopify API的Node.js模块。 我有一个JSON对象,包含产品ID和Skus的列表,我需要更新,所以我循环通过该文件,并调用一个函数,调用API。 Shopify的API限制对它的调用并发送一个剩余值的响应头。 这个节点模块提供了一个包含限制和用法的对象。 我的问题是基于下面的代码如何在setTimeout或类似的时候达到极限。 一旦你第一次打电话,它会返回这样的限制对象: { remaining: 30, current: 10, max: 40 } 这是我没有尊重的限制,因为我试过的一切都失败了: const products = JSON.parse(fs.readFileSync('./skus.json','utf8')); for(var i = 0;i < products.length; i++) { updateProduct(products[i]); } function updateProduct(product){ shopify.productVariant.update(variant.id, { sku: variant.sku }) .then(result => cb(shopify.callLimits.remaining)) .catch(err => console.error(err.statusMessage)); } 我知道我需要实现某种callback来检查剩余使用率是否低,然后等待几秒钟再次调用。 任何帮助将不胜感激。

节点mysql错误不被Promise拒绝

我正在做一个简单的数据库调用包装在一个承诺,并试图捕捉错误,并通过它的承诺reject(),但拒绝不被处理或由呼叫代码冒泡备份。 当mysql调用失败时,代码停止执行。 mysqlcallback中的错误是: 拒绝QUERY {错误:您的SQL语法错误; 检查对应于您的MariaDB服务器版本的手册,在“?”附近使用正确的语法。 在第1行 这里是数据库查询代码: this.query = function(sql, params) { return new Promise((resolve, reject) => { _pool.query(sql, params, function(err, result) { if (err) { console.log("REJECTING QUERY", err); return reject(err); } resolve(result); }); }); } 这里是调用代码: this.createUser = function(data) { var query = "INSERT into users SET ?"; return new Promise((resolve, reject) => […]

节点JScallback在同步执行

我在节点js中有这个代码 var PrintFirstName = function(first_name , cb) { cb("First name is "+first_name) ; } PrintFirstName("Tushar" , function(res){ for(var i = 0 ; i < 100000; i++) { console.log(i); } console.log("processing callback"); }); console.log("Code continue….") ; 由于callback本质上是asynchronous的,我预期的执行顺序应该是代码继续,数字1-10000,然后处理callback 但是,如果我运行上面我得到输出为数字1-10000,处理callback,然后代码继续。 代码继续应该先执行。为什么它正在等待callback完成。

如何返回MySQL查询的callback,并推送到Node.js中的数组?

我想填充一个数组使用MYSQL查询的一个表中,将所有行并将行推送到WordList。 我可以在方法内打印每行,但是当我离开该方法的范围时,它不会将任何内容推送到Wordlist。 function getParrotMessage() { wordList = []; console.log(wordList); // Implementation getWord('result', function (err, result) { console.log(result); // works, prints the row data in MySQL table wordList.push(result); // doesn't work }); console.log(wordList); return parrot_message; } // Method function getWord(word, callback) { var query = con.query('SELECT * FROM word_table'); query.on('result', function (row) { callback(null, row.word); }); […]

expression路由嵌套callback

我是新来的快递,部署一个快速的应用程序。 我想在每个调用API之前调用函数checkApiKey。 这里是我的API路线 var express = require('express'); var router = express.Router(); var fn = require('../webservices'); router.post('/api/signup',fn.checkApiKey, fn.signup); module.exports = router; 在这里我的webservice.js var fs = require('fs'), path = require('path'); var db = require('./conn') var models = require('./models') function signup(req, res, next){ var postData = req.body; console.log('signup called', postData); checkApiKey(req, res, function(err, done){ models.user.save(postData, function(err, saved) { […]

返回数据一旦获取JavaScript

使用nodeJS。 我有一个主要的文件,调用一个Web刮板,出去几个链接,并从网站获取原始数据,然后下一行调用一个函数从网页刮板文件返回一个JSON对象到主文件。 但是,由于需要一点时间出去刮网站,返回正在返回一个空的对象。 在调用get方法之前,如何使用callback或其他方法来等待数据。 主文件 var test = require('web-scraper.js'); test.scrape(next); function next() { var json = test.getJSON(); } web-scraper.js(它使用模块导出并位于节点模块文件夹中) module.exports = { scrape: function(callback) { startScraper(callback); }, getJSON: function() { return JSON; } }; function startScraper(callback) { // Does web scraper stuff callback(); }

抽象函数为了让select返回promise或callback

我不知道也许这是一个反模式。 很快,年轻的开发人员就会join我们的开发团队,我想让他们select是否要使用带有callback或Promises模式的模块。 这个function基本上把数据保存到数据库中。 我重复db.insertstream程来抽象函数,但有没有其他的方法来做到这一点? function create(data, callback) { if(callback) { db.insert(data, function(err, doc) { return callback(err, doc); }); } else { return new Promise(function(res, rej) { db.insert(data, function(err, doc) { if(err) { return reject(err); } return resolve(doc); }); }); } }

在封闭的方法中在Node JS Express请求中访问POST响应数据

我在这里抨击NodeJ的学习曲线。 我有一个应用程序在节点的JS Express使用请求进行POST到另一个API。 通话正常,我的控制台日志显示正确的数据回来。 我的问题是如何从request.post(…)中获取该响应,并在发出请求的方法中使用它。 这是我的场景。 外部应用程序调用我的API。 我的API必须调用另一个API来获取一些数据来检查更新。 (我有一个API发出POST请求,以响应来自外部应用程序的POST请求。) 这是我的API中的方法,它向第三方请求一些数据。 我需要从这个POST响应中获取数据,在响应外部应用程序的POST请求之前将其返回。 exports.getUpdates = function(variable1, variable2, variable3) { request.post( 'http://myurl.exp/api//getUpdates', {json: {var1: variable1, …}}, function (error, response, body) { if(!error && response.statusCode == 200) { console.log(body); } else {console.log(error);} } ); <I need to have this method return the response to the controller that called this […]