Как использовать предварительно заполненную базу данных sqlite в nativescript-sidekick с помощью проекта Javascript - PullRequest
0 голосов
/ 30 октября 2018

В настоящее время я пытаюсь подключиться к предварительно заполненной базе данных Sqlite в NativeScript-Sidekick с помощью проекта JavaScript . Я прошел через очень много уроков и видео, но все они включают Angular . Существует ли какой-либо код, позволяющий проекту JavaScript взаимодействовать с базой данных? Например, можно заполнить TextField содержимым, выбранным в SELECT в зависимости от столбца, в котором они находятся?

Вот мой код, далеко от учебников и тому подобного, однако они использовали Telerik :

Это home-items-page.xml

<Page
navigatingTo="onNavigatingTo"  
xmlns="http://schemas.nativescript.org/tns.xsd">

<StackLayout>
    <TextField id="firstname" hint="Fist Name" text="{{ firstname }}"/>
    <TextField id="lastname" hint="Last Name" text="{{ lastname }}" />
    <StackLayout orientation="horizontal">
        <Button text="Insert" tap="{{ insert }}" />
        <Button text="Select" tap="{{ select }}" />
    </StackLayout>
</StackLayout>
</Page>

дом-предметы-page.js

var createViewModel = require("./home-items-view-model").createViewModel;
var Sqlite = require("nativescript-sqlite");

function onNavigatingTo(args) {
var page = args.object;
if (!Sqlite.exists("eatforlife.db")) {
Sqlite.copyDatabase("eatforlife.db");
}

var db_name = "eatforlife.db";

new Sqlite(db_name).then(db => {
    page.bindingContext = createViewModel(db);
});

}

exports.onNavigatingTo = onNavigatingTo;

дом-элементы вида-модель

const observableModule = require("tns-core-modules/data/observable");
var Sqlite = require("nativescript-sqlite");

function createViewModel(db) {
var viewModel = Observable();

viewModel.firstname = "";
viewModel.lastname = "";

    viewModel.select = function(){
    db.all("SELECT * FROM client WHERE Email = ? AND Password = ?",["example@gmail.com","qwerty123"]).then(rows => {
        for(var row in rows){
            console.log("RESULT ", rows[row]);

        }
    }, error =>{
        console.log("SELECT ERROR",error);
    })
    }

return viewModel;
}

exports.createViewModel = createViewModel;

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Я получил Текстовые поля для изменения на нажмите на SQLite данные с использованием Наблюдаемые

Обновлен файл home-items-page.js

var createViewModel = require("./home-items-view-model").createViewModel;
var Sqlite = require("nativescript-sqlite");

function onNavigatingTo(args) {
var page = args.object;

if (!Sqlite.exists("eatforlife.sqlite")) {
 Sqlite.copyDatabase("eatforlife.sqlite");
}

var db_name = "eatforlife.sqlite";

new Sqlite(db_name).then(db => {
    page.bindingContext = createViewModel(db);
 });

}

exports.onNavigatingTo = onNavigatingTo;

Обновлен файл home-items-view-model.js

const Observable = require("tns-core-modules/data/observable").Observable;
const fromObject = require("tns-core-modules/data/observable").fromObject;

const fromObjectRecursive = require("tns-core- 
modules/data/observable").fromObjectRecursive;

var dialogs = require("tns-core-modules/ui/dialogs");
var Sqlite = require("nativescript-sqlite");

function createViewModel(db) {
 var viewModel = new Observable();


viewModel.select = function () {
    db.get("SELECT * FROM client").then(rows => {

        viewModel.set("setname", rows[10]);
        viewModel.set("setsurname",rows[11]);

        viewModel.set("name",this.get("setname"));
        viewModel.set("surname", this.get("setsurname"));

    }, error => {
        console.log("SELECT ERROR", error);
    });
  }

 return viewModel;
}

exports.createViewModel = createViewModel;

Обновлен файл home-items-page.xml

<Page
 navigatingTo="onNavigatingTo"  
 xmlns="http://schemas.nativescript.org/tns.xsd">

<StackLayout>
    <Label id="name" text="{{ name }}"/>
    <Label id="surname" text="{{ surname }}" />
    <StackLayout orientation="horizontal">
        <Button text="Insert" tap="{{ insert }}" />
        <Button text="Select" tap="{{ select }}" />
     </StackLayout>
 </StackLayout>
</Page>

Надеюсь, это пригодится многим другим, и благодаря Manoj

0 голосов
/ 30 октября 2018

Вы должны использовать методы getter и setter в Observable, что-то вроде

viewModel.set("firstname", YourFirstNameFromDB);
viewModel.set("lastname", YourLastNameFromDB);

Предполагая, что вы хотите получить одну строку из БД, вы можете использовать метод get вместо всех.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...