在ember js中检索记录

Retrieving records in ember js

本文关键字:检索 记录 js ember      更新时间:2023-09-26

我是ember js的新手。我有一个表格&当用户点击提交时,我要检查用户名&用户输入的密码已经在我的模型/数据库中。我试着跟着,但没用。请帮我解决这个问题。

模板

<h2>Welcome to my blog</h2>
 <form {{action 'exist' on="submit"}}>
        <dl>
        <dt>User Name:<br> {{textarea value=uName cols="20" rows="1"}}</dt>
        <dt>Password:<br> {{textarea value=passw cols="20" rows="1"}}</dt>
        </dl>
        <button type="submit" class="btn btn-primary">Login</button>
 </form>

模型
import DS from 'ember-data';
export default DS.Model.extend({
    FirstName: DS.attr('string'),
    UserName: DS.attr('string'),
    Password: DS.attr('string'),
    PermissionList: DS.attr('array')
});

路线
import Ember from 'ember';
export default Ember.Route.extend({
    model: function() {
        return this.store.find('user');
    }
});
控制器

import Ember from 'ember';
export default Ember.Controller.extend({
    actions: {
        ght: function () {
            var uName = this.get('uName');
            var passw = this.get('passw');
            if (this.store.find('user', {
                userName: this.get('uName')
            })) {
                alert('Already exist');
            }
        }
    }
});

//每次输入都显示此警告。即使它们不在模型中

因为store.find()总是返回一个承诺,它是一个对象,if的条件总是求值为真。你应该做的是等待promise解析然后做检查,比如

// ...
var uName = this.get('uName');
this.store.find('user', {
    userName: uName
}).then(function(user) {
    if(user) {
        alert('Already exist');
    } else {
    }
});
// ...

这个表单看起来像一个登录表单。如果我的假设是正确的,你不显示这个表单,如果用户已经登录(在这种情况下,会话将有用户信息)。在情况下,如果用户没有登录,你将不得不显示形式。我认为您不需要在商店中搜索用户。只需将用户发送/保存到服务器,让用户在服务器端找到逻辑并相应地发送响应。在代码端,你可以通过处理。then of promises来显示存在的结果。

如果您的用例不同,您可以使用查询(多个记录)。和queryRecord用于单个记录

查询

从文档中复制粘贴

// GET to /persons?filter[name]=Peter
this.store.query('person', { filter: { name: 'Peter' } }).then(function(peters) {
  // Do something with `peters`
});

// GET to /persons?filter[email]=tomster@example.com
this.store.queryRecord('person', { filter: { email: 'tomster@example.com' } }).then(function(tomster) {
  // do something with `tomster`
});

//在移动设备上,如果没有帮助,将添加代码