调用mongodb insert,在react native中从另一个类中查找函数,返回未定义的
这是我定义所有db函数的第一个类调用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;
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