【发布时间】:2019-04-09 15:53:58
【问题描述】:
这里绝对是 mongodb 新手,我必须说我对文档印象不深。无论如何,我的问题是我在 Mongodb Atlas 上有一个数据库,这是一个带有 next.js 前端的 Stitch 应用程序,并试图检索这样的数据:
import { setStitchClient } from '../utils/stitch';
export default class MyPage extends React.Component {
static async getInitialProps() {
const stitchClient = await setStitchClient();
const db = stitchClient.service('mongodb', 'mongodb-atlas').db('dbName');
await stitchClient.login();
const docs = await db
.collection('test')
.find()
.limit(200)
.execute();
return { docs: docs };
}
render() {...}
测试集合包括 150 个使用 mongoimport cli 导入的文档。我验证了文件是否正确导入。但是上面的.find() 没有找到任何记录,结果是一个空数组。
如果我通过前端在另一个集合中创建一个文档,我可以毫无问题地找到它。
我想这里没有简单的答案,但任何提示都会受到高度赞赏。非常感谢!
【问题讨论】:
-
您的问题是什么?有什么不工作吗?如果有,是什么?
-
对不起,我完全省略了实际问题。现在更新了。所以问题是:您是否在我的代码中看到任何错误,可以解释为什么我在导入的集合中找不到任何文档?
-
不确定到底是什么缝合,但我认为您的问题可能是二分之一。 1. 有时语言的 mongo 抽象对它们的查询非常挑剔,这意味着有时如果你想真正检索 find({}) 之类的所有内容,你必须发送一个空的 json 2. 我读到那个缝合是异步的?不确定这一点,但如果是这样,你可能会遇到这样的问题。您可以尝试在 execute 方法之后添加一个 .then 子句并在其回调中工作。希望这至少能给你一个想法。
-
我喜欢@Roger 的想法。我还认为您可能想要拨打
limit电话,因为您只有 150 个文档,这是测试代码。 (去掉一个“黑匣子”,你对它的内部结构就少了一件想知道的事情。)最后,虽然我根本不了解 Stitch,但你能简化这段代码以及它是如何执行的吗?也许让它同步,从而确保时间不是问题?