【问题标题】:angular not conencting to mongoose角度未连接到猫鼬
【发布时间】:2014-11-18 17:34:55
【问题描述】:

我正在使用 angular 连接到 mongoose db。 我有一个 .js 文件,我在其中编写了将数据插入 db 的代码:

'use strict'

test.controller('registrationCtrl', function($scope){
console.log('1');
    $scope.newregister = function(user) {
        console.log('inside registration function 1');
        var user = require(['../server.js']);
        console.log('inside registration function');

        var mongoose = require('mongoose');
        console.log('inside mongoose');

        mongoose.connect('mongodb://localhost/userregistration');
        console.log('inside connect');

        var userSchema = {
            username: String,
            firstname:String,
            lastname: String,
            email: String,
            password: String
        }          



    }

});

但是当我尝试运行代码时,它给出的错误是:

1
inside registration function 1
inside registration function
Error: Module name "mongoose" has not been loaded yet for context: _. Use require([])
http://requirejs.org/docs/errors.html#notloaded

我刚刚创建的新 js 用于测试 db 功能并且工作正常。

var mongoose = require('mongoose');

mongoose.connect('mongodb://localhost/userregistration');
console.log('1');
var userSchema = {
    username: String,
    firstname:String,
    lastname: String,
    email: String,
    password: String
}
console.log('2');
var User = mongoose.model('User', userSchema, 'user');
console.log('3');
var newUser = new User({
    username: 'sa',
    firstname:'sa',
    lastname: 'sa',
    email: 'a@a.com',
    password: 'sa'

});

console.dir(newUser);
newUser.save(function(err){
   if(!err) console.log('inserted successfull');
    else
   {
       console.log('failed');
   }

}); 

【问题讨论】:

  • 有意思,如果你把angularJS拿出来,你的猫鼬工作正常吗?
  • 如果我在 .js 文件中添加整个代码并运行 js 文件,它会将数据插入 db。我正在编辑我的问题以提供我刚刚创建的 js ......并且正在工作很好
  • @Hatjhie:有什么想法吗?
  • 我不知道如何以你的方式处理它,但如果我是你,我可能会在工厂这样做。所以,每次你需要调用 mangoose 时,你只需要将它注入到你的任何控制器中。

标签: angularjs mongoose


【解决方案1】:

您的 html 代码具有向后依赖关系。在在线网页(html 代码)中使用require('mongoose') 将不起作用。为此,您可以使用 browserifyrequire.js 来消除这些依赖关系。 他们会让您将您的<script> js 文件链接到 require.js(自动生成)并且代码可以正常工作。 如果您不明白,请访问http://requirejs.org/。那里解释的很清楚。

【讨论】:

    【解决方案2】:
    var mongoose = require('mongoose');
    

    这条线应该在你的控制器之外,即刚好低于或高于use strict

    【讨论】:

    • 这样做会产生类似“Uncaught ReferenceError: require is not defined”的错误
    • 对不起。还要将此行 var user = require(['../server.js']); 移到 mongoose 要求行上方。
    • 嗨,我已经创建了一个新的 js 文件,我在我的另一个 js 中引用了它...我已经将两者都包含在了顶部
    • 您可能需要以 Angular 方式执行此操作。如果你为那只芒果建一个工厂怎么样?然后将其注入您的控制器中?
    • 我对工厂不是很满意,但是我可以把整个js文件调用到另一个js文件吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-01
    • 2016-04-13
    • 1970-01-01
    • 1970-01-01
    • 2016-04-29
    相关资源
    最近更新 更多