Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调用mongodb insert,在react native中从另一个类中查找函数,返回未定义的_Mongodb_React Native - Fatal编程技术网

调用mongodb insert,在react native中从另一个类中查找函数,返回未定义的

调用mongodb insert,在react native中从另一个类中查找函数,返回未定义的,mongodb,react-native,Mongodb,React Native,这是我定义所有db函数的第一个类 import React,{Component} from 'react'; var Datastore = require('react-native-local-mongodb') , db = new Datastore({ filename: 'asyncStorageKey', autoload: true }); export default class RDDBManager { static dbmanager = null;

这是我定义所有db函数的第一个类

import React,{Component} from 'react';

var Datastore = require('react-native-local-mongodb')
  , db = new Datastore({ filename: 'asyncStorageKey', autoload: true });


export default class RDDBManager {
    static dbmanager = null;
static getInstance() {
    if (RDDBManager.dbmanager == null) {
        RDDBManager.dbmanager = new RDDBManager();
    }

    return this.dbmanager;
}


constructor () {

}



//insert items
insertItem(item){
    var json = item.toJsonString();
    console.log("Inside insertItem ::: "+json);
    db.insert(json,function(err,newDos){
     return newDos;
    });
}

//read single item
readItem(itemId){
    db.findOne({ id: itemId }, function (err, doc) {
     return doc; 
    });
}

//read all items
readAllItems(){

    db.find({}, function (err, docs) {
        return docs;
    });



}


getModalData(modalName) {
    this.readAllItems();
}

//update
updateItem(itemId){
    db.update({ id: itemId }, { $set: { system: 'solar system' } }, { multi: true }, function (err, numReplaced) {

    });
}

//delete item
deleteItem(itemId){
    db.remove({ id: itemId }, {}, function (err, numRemoved) {
      return numRemoved;
    });
}


}
但是,当我试图从另一个类调用这些函数时,数据是未定义的

loadDataFromDB() {

var items = RDDBManager.getInstance().readAllItems();

console.log("Items ======>>>>>> "+items);
}

项的值未定义。

这是因为您的操作不正确,您的
readallitems
本质上是异步的,因此您必须执行以下操作:-

loadDataFromDB() {

var items = RDDBManager.getInstance().readAllItems();

console.log("Items ======>>>>>> "+items);
}
//read all items
readAllItems(callback){
    db.find({}, function (err, docs) {
        callback(docs);
    });
}
loadDataFromDB() {
   RDDBManager.getInstance().readAllItems(function(items){
     console.log("Items ======>>>>>> "+items);
   });
}
而对于这样的称呼:-

//read all items
readAllItems(callback){
    db.find({}, function (err, docs) {
        callback(docs);
    });
}
loadDataFromDB() {
   RDDBManager.getInstance().readAllItems(function(items){
     console.log("Items ======>>>>>> "+items);
   });
}
或者,也可以使用promise或Async Wait