Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js MongoDB mongojs节点_Node.js_Mongodb_Mongojs - Fatal编程技术网

Node.js MongoDB mongojs节点

Node.js MongoDB mongojs节点,node.js,mongodb,mongojs,Node.js,Mongodb,Mongojs,我正在学习node、mongodb和mongojs,还有一个新手问题 我的路线是这样的 server.get({path: PATH + '/:author', version: '0.0.1'}, msg.findMsgsByAuthor); { "parentId": "1234", "category": 1, "author": "George", "title": "Threaded Messages", "body": "blah blah

我正在学习node、mongodb和mongojs,还有一个新手问题

我的路线是这样的

server.get({path: PATH + '/:author', version: '0.0.1'}, msg.findMsgsByAuthor);
{
    "parentId": "1234",
    "category": 1,
    "author": "George",
    "title": "Threaded Messages",
    "body": "blah blah blah blah",
    "likes": "5",
    "dislikes": "10",
    "inaccurate": "20"
}
我的JSON看起来像这样

server.get({path: PATH + '/:author', version: '0.0.1'}, msg.findMsgsByAuthor);
{
    "parentId": "1234",
    "category": 1,
    "author": "George",
    "title": "Threaded Messages",
    "body": "blah blah blah blah",
    "likes": "5",
    "dislikes": "10",
    "inaccurate": "20"
}
我想做的是简单的SQL-select*from msgs,其中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"
}
当我说代码不起作用时,我的意思是当我使用Postman Rest客户端Chrome插件进行测试时,我得到以下结果

{
    "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
如果我使用msgs.findOne使用类似的回调,它将按预期工作

 msgs.findOne({_id: mongojs.ObjectId(req.params.msgId)}, function (err, success) {...}
我认为这应该足够的代码来解释我要做什么


如果您能提供任何指导,我们将不胜感激。

与这家伙在同一间办公室工作会帮上大忙。他面临的问题是,他将两个不同的处理程序映射到一条路线。它们之间没有区别,他的字符串George作为findOne调用的一部分被传递给mongojs.ObjectId生成器,该生成器生成传入的参数必须是12字节的单个字符串或24个十六进制字符的字符串错误消息。更新路由以使其独立解决了问题。

您的回拨代码是什么?您可以编辑原始帖子,将添加的代码包含在评论中。您还应该在声明MSG的地方发布代码。就目前而言,这里没有足够的资源来真正帮助你。你仔细看过那本书了吗?我相信这足够让你开始了。是的,我看了文档,尝试了一些东西——显然是错误的。我仍在查看它们并试图理解它们,但我想在此期间我会问一下。您在包含相关代码方面做得很好,但我担心不工作是对任何问题最没有帮助的描述-什么不工作?你有没有发现一个错误,或者根本没有结果,一张空白的纸或者什么的?如果用已知的正确值替换req.params.author,它是否有效?当您呼叫msgs.find时,msgs是否在范围内?谢谢。。。哑铃又打了。