来自角度控制器的猫鼬访问

Posted

技术标签:

【中文标题】来自角度控制器的猫鼬访问【英文标题】:Mongoose access from angular controller 【发布时间】:2017-10-10 15:31:37 【问题描述】:

我尝试在 node/angular 中做一个简单的服务器/客户端,通过 mongoose 连接到 MongoDB 数据库。

我的结构:

app/
   app.js   (mongoose connect / schema /models )
   bower.json
   components/
      app.module.js
      app.routes.js
      artistes/
        addArtist.html
        addArtistController.js
      home/ (html controller service)
   shared/ (header & footer html)
   assets/  (css/js/img/fonts)
   bower_components/  
   index.html (main index)
data/    (mongo db)
mongod*        (script to launch mongodo)
package.json   (npm start)
routes/
bin/  
models/  (empty)
node_modules/     
server.js

我想在 server.js 中对所有 mongoose 逻辑进行分组,然后当它可以工作时,我会将模型放在模型目录中,但不是现在。

我的服务器获得了 mongoose 连接、架构和模型创建 保存功能和查找功能。 但我为此完全迷失了:

如何在我的 addArtistController 中从 server.js 访问我的保存和查找功能?我不能 require('mongoose') 因为不需要浏览器端。任何例子都行。

【问题讨论】:

【参考方案1】:

您必须在 Angularjs $http 的帮助下向您的服务器发出 请求

我真的不知道如何从服务器端执行此操作,因为您不共享 server.js,但假设您已经有一个用于返回 MongoDB 数据的 find 函数的端点(我建议使用express 路由器),在前端(控制器,服务等)你可以尝试这样的事情:

// Angular v1
angular.module('addArtistController')
  .controller('AddArtist', ['$scope', '$http', function ($scope, $http) 
      $http.get("/find").then(function (data) 
          $scope.data = data; // data is now available in the scope
      , function (err) 
          console.log(err)
      );
  ])

https://docs.angularjs.org/api/ng/service/$http

我仍然是最新版本的 Angular 的新手,但概念保持不变。

// Angular v4
return new Promise(resolve => 
  this.http.get('/find')
    .map(res => res.json())
    .subscribe(data => 
      this.data = data;
      resolve(this.data);
    );
);

https://angular.io/docs/ts/latest/api/http/index/Http-class.html

【讨论】:

以上是关于来自角度控制器的猫鼬访问的主要内容,如果未能解决你的问题,请参考以下文章

NestJS如何在单元测试中创建新的猫鼬模型?

具有多个和可选字段的猫鼬查找

带有打字稿的猫鼬,来自猫鼬的错误“连接”

来自不同集合的子文档 ID 数组的猫鼬模式

来自不同集合的子文档 ID 数组的猫鼬模式

带有异步队列和瀑布的猫鼬