将数组对象添加到 minimongo
Add array object to minimongo
我有一个聊天应用程序,它使用 Ionic 2
和 Meteor
以及 MongoDB
。它完美运行。
但是,所有内容都存储在 MongoDB
服务器上,因此每次用户想要查看他们的消息时,他们都需要连接到 Meteor/Mongo
服务器 运行在云端。此外,如果一个用户删除了他们的 chat
,它将删除 MongoDB
上的 chat
,并且相应的其他用户也将删除他们的 chat
。
我想要与 WhatsApp 类似的功能,其中 messages
保存在设备本地(我正在使用 SQLite
),并且只有新的 messages
保存在云中,直到两个用户都下载它们。
目前我的应用程序迭代 Mongo.Cursor<Chat>
对象。它还观察这个对象 (this.chats.observe({changed: (newChat, oldChat) => this.disposeChat(oldChat), removed: (chat) => this.disposeChat(chat)});
).
我从 SQLlite
中获取 chat
数据并存储在本地 (Array<Chat>
)。
问题
是否可以将 SQLite
数据 (Array<Chat>
) 添加到 Mongo.Cursor<Chat>
?当我这样做时,我只想添加到服务器上的 minimongo
而不是 MongoDB
。
谢谢
更新
Asp 根据下面的建议,我执行以下操作:
let promise: Promise<Mongo.Cursor<Chat>> = new Promise<Mongo.Cursor<Chat>>(resolve => {
this.subscribe('chats', this.senderId, registeredIds, () => {
let chats: Mongo.Cursor<Chat> = Chats.find(
{ memberIds: { $in: registeredIds } },
{
sort: { lastMessageCreatedAt: -1 },
transform: this.transformChat.bind(this),
fields: { memberIds: 1, lastMessageCreatedAt: 1 }
}
);
this.localChatCollection = new Mongo.Collection<Chat>(null);
console.log(this.localChatCollection);
chats.forEach(function (chat: Chat) {
console.log('findChats(): add chat to collection: ' + chat);
this.localChatCollection.insert(chat);
});
如果有效会更新。
更新
当我执行以下操作时,inserts
chat
对象:
let promise: Promise<Mongo.Collection<Chat>> = this.findChats();
promise.then((data: Mongo.Collection<Chat>) => {
let localChatCollection: Mongo.Collection<Chat> = new Mongo.Collection<Chat>(null);
data.find().forEach(function (chat: Chat) {
console.log('==> ' + chat);
localChatCollection.insert(chat);
});
但是,如果我全局定义 localChatCollection
,它不会 insert
chat
对象。没有错误,但该过程只是在 insert
行停止。
private localChatCollection: Mongo.Collection<Chat> = new Mongo.Collection<Chat>(null);
....
this.localChatCollection.insert(chat);
关于如何将其插入到全局定义的 collection
中的任何想法?
Is it possible to add the SQLite data (Array) to the Mongo.Cursor? When I do so, I want to just add to minimongo and not MongoDB on the server.
Meteor 本身对 SQLite 一无所知,但听起来你有它的一部分在工作。
要仅添加到 minimongo 而不是 mongodb 服务器,您正在寻找客户端集合。只需将 null
作为第一个参数传递给创建您的集合的调用,即
var localChatCollection = new Mongo.Collection(null)
然后您可以像使用同步集合一样插入到 localChatCollection
。
我有一个聊天应用程序,它使用 Ionic 2
和 Meteor
以及 MongoDB
。它完美运行。
但是,所有内容都存储在 MongoDB
服务器上,因此每次用户想要查看他们的消息时,他们都需要连接到 Meteor/Mongo
服务器 运行在云端。此外,如果一个用户删除了他们的 chat
,它将删除 MongoDB
上的 chat
,并且相应的其他用户也将删除他们的 chat
。
我想要与 WhatsApp 类似的功能,其中 messages
保存在设备本地(我正在使用 SQLite
),并且只有新的 messages
保存在云中,直到两个用户都下载它们。
目前我的应用程序迭代 Mongo.Cursor<Chat>
对象。它还观察这个对象 (this.chats.observe({changed: (newChat, oldChat) => this.disposeChat(oldChat), removed: (chat) => this.disposeChat(chat)});
).
我从 SQLlite
中获取 chat
数据并存储在本地 (Array<Chat>
)。
问题
是否可以将 SQLite
数据 (Array<Chat>
) 添加到 Mongo.Cursor<Chat>
?当我这样做时,我只想添加到服务器上的 minimongo
而不是 MongoDB
。
谢谢
更新
Asp 根据下面的建议,我执行以下操作:
let promise: Promise<Mongo.Cursor<Chat>> = new Promise<Mongo.Cursor<Chat>>(resolve => {
this.subscribe('chats', this.senderId, registeredIds, () => {
let chats: Mongo.Cursor<Chat> = Chats.find(
{ memberIds: { $in: registeredIds } },
{
sort: { lastMessageCreatedAt: -1 },
transform: this.transformChat.bind(this),
fields: { memberIds: 1, lastMessageCreatedAt: 1 }
}
);
this.localChatCollection = new Mongo.Collection<Chat>(null);
console.log(this.localChatCollection);
chats.forEach(function (chat: Chat) {
console.log('findChats(): add chat to collection: ' + chat);
this.localChatCollection.insert(chat);
});
如果有效会更新。
更新
当我执行以下操作时,inserts
chat
对象:
let promise: Promise<Mongo.Collection<Chat>> = this.findChats();
promise.then((data: Mongo.Collection<Chat>) => {
let localChatCollection: Mongo.Collection<Chat> = new Mongo.Collection<Chat>(null);
data.find().forEach(function (chat: Chat) {
console.log('==> ' + chat);
localChatCollection.insert(chat);
});
但是,如果我全局定义 localChatCollection
,它不会 insert
chat
对象。没有错误,但该过程只是在 insert
行停止。
private localChatCollection: Mongo.Collection<Chat> = new Mongo.Collection<Chat>(null);
....
this.localChatCollection.insert(chat);
关于如何将其插入到全局定义的 collection
中的任何想法?
Is it possible to add the SQLite data (Array) to the Mongo.Cursor? When I do so, I want to just add to minimongo and not MongoDB on the server.
Meteor 本身对 SQLite 一无所知,但听起来你有它的一部分在工作。
要仅添加到 minimongo 而不是 mongodb 服务器,您正在寻找客户端集合。只需将 null
作为第一个参数传递给创建您的集合的调用,即
var localChatCollection = new Mongo.Collection(null)
然后您可以像使用同步集合一样插入到 localChatCollection
。