【问题标题】:Mongoose Routing Specific Query OutputMongoose 路由特定查询输出
【发布时间】:2015-04-06 20:32:16
【问题描述】:

猫鼬新手问题。我正在尝试构建一个 MEAN 应用程序,该应用程序根据用户输入的参数查询现有数据库。外部程序正在使用 JSON 填充数据库。

到目前为止,当我使用以下路由器时,我的路由器成功显示了所有 Mongo 记录:

// Pulls all JSONs
router.get('/jsons', function(req, res, next) {
    Json.find(function(err, jsons){
        if(err) { return next(err);}

        res.json(jsons);
    });
});

现在我正在尝试创建一个单独的路由,该路由可以显示该数据库中的特定字段。 (其中 TestLocation = "New York")

// Pulls a JSON with City New York
router.get('/jsons/NewYork', function(req, res, next) {
    var queryNYC = Json.where({TestLocation: "New York"});
    queryNYC.findOne(function(err, jsons) {
        if(err) { return next(err);}
        res.json(jsons);
    });
});

这将返回 null 给我,尽管原始路线显示一条 JSON 记录确实有一个纽约的 TestLocation。

我的架构如下:

var mongoose = require('mongoose');

// Base schema for the query results table
var JsonSchema = new mongoose.Schema({
        uploadID: String,
        uploadDate: Date,
        testDate: Date,
        username: String,
        type: String,
        markers: String,
        image: String,
        TestLocation: String
    },
    {
        collection: 'data'
    }
);

mongoose.model('Json', JsonSchema);

所以我的问题:

A) 我设置正确吗

B) 我是否需要我的 Mongoose 架构来完全匹配数据库中的内容?我的 Mongoose 架构有一个字段 TestLocation 与 MongoDB 数据库中的 TestLocation 字段匹配,但我在 MongoDB 数据库中也有很多字段未包含在架构中。我是否需要包括这些才能看到这个工作?

谢谢!

【问题讨论】:

    标签: json node.js mongodb express mongoose


    【解决方案1】:

    您所做的看起来不错,数据库中的数据不必与您的数据相同。使用以下内容:

    Json.findOne({TestLocation: "New York"}, function(err, jsons) {
        if(err) { return next(err);}
        res.json(jsons);
    });
    

    【讨论】:

    • 感谢有关数据不匹配的答案。不幸的是,更改为 findOne 还没有解决我的问题。需要继续环顾四周。
    • 实际上看起来我发现了自己的问题。我查询的变量实际上是一个较大对象内的参数。
    猜你喜欢
    • 2012-08-11
    • 2013-02-11
    • 2023-03-21
    • 2015-10-16
    • 1970-01-01
    • 2020-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多