2014-04-27 65 views
1

我想學習節點,mongodb和mongojs,並有一個新手問題。MongoDB mongojs節點

我的路線是這樣的......

server.get({path: PATH + '/:author', version: '0.0.1'}, msg.findMsgsByAuthor); 

我的JSON看起來像這樣...

{ 
    "parentId": "1234", 
    "category": 1, 
    "author": "George", 
    "title": "Threaded Messages", 
    "body": "blah blah blah blah", 
    "likes": "5", 
    "dislikes": "10", 
    "inaccurate": "20" 
} 

我想要做的是在SQL簡單的東西 - select * from msgs where author = 'George'

如何使用mongo/mongojs來做到這一點?

我已經試過這樣的事情沒有成功...

msgs.find({author: req.params.author}, function (err, success) { ...} 

回調代碼

exports.findMsgsByAuthor = function (req, res, next) { 
    res.setHeader('Access-Control-Allow-Origin', '*'); 
    msgs.find({author: req.params.author}).sort({category: 1}, function (err, success) { 
     logit(err, success); 
     if (success) { 
      res.send(200, success); 
      return next(); 
     } 
     return next(err); 
    }) 
}; 

這裏有一些聲明

var msgs = require('../setup').msgs; 
var mongojs = require('../setup').mongojs; 
var db = require('../setup').db; 

而且setup.js是

var config = require('./config'); 
var connection_string = config.connectionString; 
var mongojs = exports.mongojs = require('mongojs'); 
var db = exports.db = mongojs(connection_string, ['msg', 'user']); 
var msgs = exports.msgs = db.collection("msgs"); 
var port = exports.port = config.port; 
var ipAddress = exports.ipAddress = config.ipAddress; 

最後,config.json

{ 
    "connectionString":"127.0.0.1:27017/msg", 
    "ipAddress":"127.0.0.1", 
    "port": "8080" 
} 

當我說的代碼不工作,我的意思是,當我測試使用郵差REST客戶端瀏覽器插件中,我得到以下

{ 
    "code": "InternalError", 
    "message": "Argument passed in must be a single String of 12 bytes or a string of 24  hex characters" 
} 

當我嘗試用

http://127.0.0.1:8080/msgs/George 

一個GET如果我使用使用msgs.findOne類似的回調,它按預期工作

msgs.findOne({_id: mongojs.ObjectId(req.params.msgId)}, function (err, success) {...} 

我認爲這應該是足夠的代碼來解釋什麼,我試圖做

任何指導,將不勝感激。

+0

什麼是您的回撥代碼? – Vinz243

+0

您可以編輯原始文章以包含您在評論中添加的代碼。你還應該在聲明'msgs'的地方發佈代碼。現在,這裏沒有足夠的真正幫助你。你有沒有仔細看過[MongoJS文檔](https://github.com/mafintosh/mongojs)?我確信有足夠的空間讓你開始。 – sgress454

+0

是的,我查看了文檔,嘗試了一些東西 - 顯然不正確。我仍然在看着他們,試圖理解,但我想我會在這裏問。 – mortsahl

回答

1

與這傢伙在同一間辦公室工作有很大幫助。他面臨的問題是他已經將2個不同的處理程序映射到單個路徑。沒有任何區別,他的字符串George正在傳遞給mongojs.ObjectId構建器,作爲findOne調用的一部分,並且這產生了Argument passed in must be a single String of 12 bytes or a string of 24 hex characters錯誤消息。更新路線以便它們明顯地解決了問題。

+0

謝謝...再次假人罷工。 – mortsahl