2017-09-02 48 views
0

我正在学习webtask.io,所以我编写了一个简单的REST API(我没有在这里使用Express.js,但也许我应该)。这是一个小的webtask.io应用程序,它连接到一个mlab MongoDB数据库并从任务列表集合中检索待办事项。问题是,我得到这个错误:我的mongoDB api得到一个webtask.io令牌错误

{ “代码”:404, “消息”: “无法解决JTN到webtask令牌”, “REQ_ID”: “1504385487318.83712”}”

任何想法如何解决这个错误,这里是我的代码片段:

var MongoClient = require('mongodb').MongoClient; 
... 
module.exports = 
    function (ctx, req, res) { 
    // write the header and set the response type as a json 
    res.writeHead(200, { 'Content-Type': 'application/json' }); 
    MongoClient.connect(ctx.data.MONGO_URL, function (err, db) { 
    if (err) { 
     res.writeHead(400, { 'Content-Type': 'application/json'}); 
     res.end(JSON.stringify(ERROR_RESPONSE.CONNECT_ERROR)); 
    } else { 
     switch(req.method) { 
     case 'GET': 
     db.collection('tasklist').find({}).sort({"dateAdded" : -1}).toArray(function(err, docs) { 
     if (err) { 
      res.writeHead(400, { 'Content-Type': 'application/json'}); 
      res.end(JSON.stringify(ERROR_RESPONSE.GET_ERROR)); 
     } else { 
      res.end(JSON.stringify(docs)); 
     } 
     }); //toArray 

     break; 
     //post, delete, and put are in here 
     } //switch 
    } //else no error 
    db.close(); 
    }); //Mongo connect 
    res.end(); 
    } //export function 
+0

几岁是您的令牌? – user10089632

+0

这已经过了几天了,我通过https://webtask.io/token获得了它。你能给我一些关于如何设置它的方向,并指定它在一个URL中,说key = value?随身携带是非常漫长和繁琐的。 –

回答

0

我决定使用Express尝试,现在我可以不必有一个Web令牌运行我的小webtask.io 。我不知道为什么我的第一次尝试需要一个,如果我找到答案,我会发布它。这是我的工作版本:

/* express app as a webtask */ 
var MongoClient = require('mongodb').MongoClient; 
var Express = require('express'); 
var wt = require('webtask-tools'); 
var app = Express(); 
var assert = require('assert'); 
var ObjectId = require('mongodb').ObjectId; 

app.use(require('body-parser').json()); 

function doCRUD (crudType,req,res) { 
    MongoClient.connect(req.webtaskContext.secrets.MONGO_URL,function (err, db) { 
    if (err) { 
     res.send(JSON.stringify(err)); 
    } else { 
     switch(crudType) { 
     case 'GET': 
     db.collection('tasklist').find({}).sort({"dateAdded" : -1}).toArray(function(err, docs) { 
     if (err) { 
      res.send(JSON.stringify(err)); 
     } else { 
      res.end(JSON.stringify(docs)); 
     } 
     }); //toArray 
     break; 
     case 'POST': 
     db.collection('tasklist').insertOne({"tasklist" : req.query.todo, "dateAdded" : new Date()}, function(err, r) { 
      assert.equal(null, err); 
      assert.equal(1, r.insertedCount); 
     }); 
     break; 
     case 'DELETE': 
     db.collection('tasklist').deleteOne({_id: new ObjectId(req.query.id)},function(err){assert.equal(null,err)}); 
     break; 
     case 'PUT': 
     //not implemented for this hack 
     break; 
     } 
    } 
}); 
} 
// GET 
app.get('*', function (req, res) { 
    doCRUD('GET',req,res); 
}); 
// POST 
app.post('*', function (req, res) { 
    doCRUD('POST',req,res); 
    res.end(); 
}); 
// DELETE 
app.delete('*', function (req, res) { 
    doCRUD('DELETE',req,res); 
    res.end(); 
}); 

// expose this express app as a webtask-compatible function*/ 

module.exports = wt.fromExpress(app); 
相关问题