如何从我的 Angular 前端服务中查询用户?
Posted
技术标签:
【中文标题】如何从我的 Angular 前端服务中查询用户?【英文标题】:How can I query a User from my Angular front-end service? 【发布时间】:2017-10-19 09:28:22 【问题描述】:问题:
我正在尝试在我的前端 Angular 2 服务中查询当前登录的用户:
UserModel.findById(userID, function (err, user)
从浏览器看来这种行为是可能的,我如何从我的服务中查询用户?
错误:
使用 webpack 运行 npm run build
然后 npm start
:
user.js?b9cb:19 Uncaught TypeError: mongoose.model is not a function
哪个带我去网上搜索错误的意思,有效发现mongoose不支持来自客户端的查询?
https://github.com/Automattic/mongoose/issues/4779
代码:
模型/用户
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var mongooseUniqueValidator = require('mongoose-unique-validator');
var schema = new Schema(
firstName: type: String, required: true,
lastName: type: String, required: true,
password: type: String, required: true,
email: type: String, required: true, unique: true,
polls: [type: Schema.Types.ObjectId, ref: 'Poll'],
votes: [
poll: type: Schema.Types.ObjectId, ref: 'Poll',
choice: type: Number,
],
);
schema.plugin(mongooseUniqueValidator);
module.exports = mongoose.model('User', schema);
client.service
var UserModel = require('../../../models/user');
voted(poll: Poll, userID: string, choice: number)
UserModel.findById(userID, function (err, user)
var result = "";
for (var i = 0; i < user.votes.length; i ++)
if (user.votes[i].poll == poll.pollId)
result = "disabled";
if (user.votes[i].choice == choice)
result = "selected";
return result;
)
【问题讨论】:
您是在尝试在电子等某种类型的环境中运行您的 Angular 应用程序,还是在浏览器中运行?如果是后者,那么我建议您实际阅读您引用的“问题”,因为这在浏览器中不起作用。如果你想问“我如何从浏览器访问 MongoDB”,那么不要。而是在您最喜欢的搜索引擎中输入该短语并开始阅读结果。 为什么投反对票,请解释。如有必要,我愿意修改我的问题:) @NeilLunn 我知道。这就是为什么我在这里问一个问题:D 我想知道如何从我的服务中查询我的用户,因为我目前的实现无法从浏览器中查询。 为了记录,这不是我的反对意见。但我认为我所说的解释了为什么有人投反对票。即有大量关于“我如何从浏览器使用”问题的信息,因为您不是第一个提出问题的人。 @NeilLunn 我应该更清楚一点,我知道我无法从浏览器查询 MongoDB,我只是在问我可以做些什么来从我的服务中查询我的用户。 【参考方案1】:检查 Angular2 的 http 模块以发出请求。这是一个 GET 请求,但如果您愿意,我相信您可以提出所有其他请求。
import Component from '@angular/core';
import Http from '@angular/http';
@Component(
selector: 'http-app',
templateUrl: 'your-template.html'
)
class YourComponent
constructor(http: Http)
http.get('your-endpoint')
.map(response => response.json())
.subscribe(json => this.json = json);
【讨论】:
我在服务中使用它,而不是组件:D 即使在服务中,您仍然可以使用相同的 http.get(endpoint) 方法以上是关于如何从我的 Angular 前端服务中查询用户?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 AngularFirebase 和 Angular 7 从用户集合中获取用户数据
如何使用 Angular Ionic 从我的 Firebase 实时数据库中获取一项
Spring Security JWT - 通过授权标头的邮递员身份验证有效,但从我的 Angular 前端不起作用