Node.js 使用MongoDB、NodeJS和Angular5表单中的用户输入获取特定记录
我试图使用用户输入的角度模板从MongoDB数据库中获取一条记录。下面是我的api.js文件中的内容:Node.js 使用MongoDB、NodeJS和Angular5表单中的用户输入获取特定记录,node.js,mongodb,typescript,angular5,Node.js,Mongodb,Typescript,Angular5,我试图使用用户输入的角度模板从MongoDB数据库中获取一条记录。下面是我的api.js文件中的内容: // Response handling let response = { status: 200, key: [], message: null }; router.get('/keys/:key', (req, res, next) => { connection((db) => { db.collection('keys') .findOne({key: re
// Response handling
let response = {
status: 200,
key: [],
message: null
};
router.get('/keys/:key', (req, res, next) => {
connection((db) => {
db.collection('keys')
.findOne({key: req.params.key})
.then((keys) => {
response.key = keys;
res.json(keys);
})
.catch(err => {
return next({ status: 500, message: 'messed up'})
});
});
});
这是我的keys.service.ts文件:
@Injectable()
export class KeysService {
result: any
constructor(private _http: Http) {}
getKeys(typeKey) {
return this._http.get(`/api/keys/:key${typeKey}`)
.map(result => this.result = result.json().key);
}
}
以下是模板(对于格式设置,我深表歉意):
欢迎来到{{title}}!
检查你的
关键拼写
正确的密钥拼写是:{{keySpelling}}
我现在收到的错误是“类型错误,无法读取null的属性键”。它指的是最后一行的keys.service.ts文件中的“key”
我不是在用猫鼬或和尚。我对数据库进行了一般性查询,该查询提供了集合“键”的全部内容,但当我尝试进行单独查询时,没有骰子。有人知道我做错了什么吗?。然后((keys)=>{response.key=keys;res.json(keys);})这里的响应可能没有定义
keys
是API返回的实际响应。尝试删除response.key=keys
很有可能keys
会有一个data
属性,这可能就是您要查找的。尝试添加一个console.log(keys)
来查看具体返回的内容。它是node.js部分中的res.json。您的返回对象没有键“key”,因为您的服务正在解析json,并且使用的“key”response
没有在任何地方定义,因此它被视为null
@NeilLunn——response实际上是定义的,我忘了添加它。我修好了,我帮不上什么忙了。但一定要进一步研究如何连接到该数据库和集合。有些东西看起来不对劲。
<div class="container">
<div style="text-align:center">
<h1>
Welcome to {{ title }}!
</h1>
</div>
<div class="row">
<div class="col-xs-12 col-sm-10 col-md-8 col-sm-offset-1 col-md-offset-2">
<input type="text" [(ngModel)]="typeKey">
<button class="btn btn-primary" (click)="getKeyClass(typeKey)">Check Your
Key Spelling</button>
<br><br>
<h2>The Correct Key Spelling is: {{ keySpelling }}</h2>
</div>
</div>
</div>