【问题标题】:node.js mongodb query in controller using MEAN stack使用 MEAN 堆栈的控制器中的 node.js mongodb 查询
【发布时间】:2014-06-17 23:15:10
【问题描述】:

对于这个控制器,我只是想返回一个集合的所有结果。道具集合中有一项,但由于某种原因,我不断收到未定义的错误。

TypeError: 无法调用未定义的“查找”方法

这是我的 server.js 文件:

'use strict';

/**
 * Module dependencies.
 */
var mongoose = require('mongoose'),
passport = require('passport'),
logger = require('mean-logger');

   /**
 * Main application entry file.
 * Please note that the order of loading is important.
*/

// Initializing system variables
var config = require('./server/config/config');
var db = mongoose.connect(config.db);

// Bootstrap Models, Dependencies, Routes and the app as an express app
var app = require('./server/config/system/bootstrap')(passport, db);

// Return all results.
app.get('/all', function(req, res) {

  var d = db.prop.find();

  res.json(d);

});

// Start the app by listening on <port>, optional hostname
app.listen(config.port, config.hostname);

// Initializing logger
logger.init(app, passport, mongoose);

// Expose app
exports = module.exports = app;

【问题讨论】:

  • 如果您使用的是护照/mongo-您是否有任何用于猫鼬的虚拟模式...通常您会执行User.find({}) 之类的操作来获取所有值-实际上...也许您正在做的是好的 - 但你可能需要db.prop.find({});
  • 在括号内添加方括号。
  • 用猫鼬空括号表示“全部”而不是“无”——有点违反直觉
  • 虽然您不需要空括号,但@ewizard 是正确的,您需要在正确的 Mongoose 模型上调用 find;所以像Prop.find().
  • 谢谢大家,问题是集合由于某种原因未定义。 db 已定义,但 db.prop 未定义。但是在 mongo shell 的终端中,我可以查看表格并查看数据。

标签: javascript node.js angularjs mongodb mean-stack


【解决方案1】:

这一切都错了,我习惯使用 js 和 restful 控制器。在 server.js 中设置控制器路由是正确的,但进行 mongodb 调用实际上是在平均堆栈的模型级别完成的,因此这不是预期的功能。基本上你不需要ajax 来查询一个mongo db。只是不习惯这种方式编程,不过感谢您的反馈。

【讨论】:

    猜你喜欢
    • 2013-11-17
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    • 1970-01-01
    • 1970-01-01
    • 2019-08-13
    • 2017-06-30
    • 1970-01-01
    相关资源
    最近更新 更多