【问题标题】:mongoose schema with dynamic nested Object具有动态嵌套对象的猫鼬模式
【发布时间】:2016-01-05 20:57:03
【问题描述】:

我正在尝试创建一个文档架构,其中我将拥有一个动态对象。示例:

var ModuleSchema = new Schema({
    name : String,
    description : String,
    type : String,
    age : String,
    options : {}
});

有可能吗

选项:{}

喜欢吗?里面有任意属性。当我尝试访问路由 /api/something 以获取集合中的所有文档时,我得到了 TypeError: Cannot read property 'find' of undefined。这可能是因为我定义架构的方式。有什么想法吗?

编辑:

var Module = require('../models/module');var auth =require('../config/auth');module.exports = function(router,Module){
router
    .get('/api/modules' , auth.checkAuth, function(req,res){
        Module.find(function(err,modules){
            if(err){
                res.send(err);
            }else{
                res.json(modules);
            }
        });
    })
    .post('/api/modules' , auth.checkAuth,function(req,res){
        var module = new Module();
        console.log(req.body);
        module.name = req.body.name;
        module.type = req.body.type;
        module.description = req.body.description;
        module.age = req.body.filename;
        module.options = req.body.options;
        module.save(function(err,module){
            if(err){
                res.send(err);
            }else{
                res.json({ id : module._id});
            }
        });
    });

【问题讨论】:

  • 我认为这与架构没有任何关系。你能贴一下你的路线代码吗?
  • 错误出现在 Module.find() 中,“Module”命名空间可以用于其他用途吗?这就是冲突的原因?

标签: javascript node.js mongodb rest mongoose


【解决方案1】:

我使用这样的东西。

// Importing the Users Mongoose Scheme
 var User       = require('../app/models/user');
 var Feed      = require('../app/models/ufeed');

 module.exports = function(app) {


// A Route to get all users info
app.get('/user/all', function(req, res) {
// use mongoose to get all users in the database
User.find(function(err, user) 
{
    // if there is an error retrieving, send the error. nothing after res.send(err) will execute
    if (err)
    {
        res.send(err);
    }
    // return all todos in JSON format
    res.json(user);

   });
});

在我的 server.js 文件中,我正在创建一个这样的应用程序。

 var app      = express();

然后将它传递给我的路由文件。

 require('./app/routes.js')(app); // load our routes and pass in our app

我希望这会有所帮助。

【讨论】:

  • 是的,这是一个解决方案,但我将 (app) 作为 (router) 传递,但问题是由于某种原因......我也传递了 Module , module.exports = function(router ,Module) {...},即覆盖顶部的 Module =require(...)。感谢您提供的提示,它帮助我在该行代码中进行搜索。
  • 是的,我也将 Module 更改为 SomethingElse,所以它不会发生冲突。
猜你喜欢
  • 2017-01-28
  • 1970-01-01
  • 2016-11-09
  • 1970-01-01
  • 2019-03-22
  • 2020-03-10
  • 2019-07-16
  • 2018-10-15
  • 2014-06-22
相关资源
最近更新 更多