gpt4 book ai didi

mongodb - 在nuxt中使用mongodb

转载 作者:行者123 更新时间:2023-12-03 06:46:21 25 4
gpt4 key购买 nike

我正在尝试将 MongoDB 用于 Vuex 不适合的长期和复杂存储。

我安装并运行了 MongoDB,并且安装了 mongoose 包。

在我的插件文件夹中,我创建了一个脚本来初始化模块并将其导出:

plugins/mongoose.js

const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost/users', { useNewUrlParser: true });

export default({ app }, inject) => {

inject('mongoose', mongoose);

}

然后在我的 nuxt.config.js 中声明模块并将其设置为仅服务器端。

nuxt.config.js

...
plugins: [
{ src: '~/plugins/mongoose.js', mode: 'server' },
],
...

最后,在我的一个页面中,我尝试通过一种方法访问它。

pages/users.vue

<template>
<button @click="addUser('joe')">Joe</button>
</template>

<script>
export default {
methods: {
addUser(name) {
console.log(this.$mongoose);
}
}
}
</script>

当我单击控制台中的按钮时,我得到 cannot stringify a function change 然后 cannot stringify a function name。我不知道这是否有效,但我不能使用 mongoose 对象的任何属性。

关于这个主题似乎没有太多结构化信息,尽管它看起来相当普遍。

最佳答案

您可以创建自己的 serverMiddleware,然后在您的 asyncData 中调用它。简化后,我有以下内容:

// nuxt.config.js
const bodyParser = require('body-parser')

export default {
...,
serverMiddleware: [
bodyParser.json(),
{ path: '/db-api', handler: '~/api/db-connection' },
],
}

在 db-connection 中你可以添加类似的东西:

import {
getOneDocument,
} from '../utils/db-helper'

export default async function (req, res, next) {
const doc = await getOneDocument('my-one-and-only-collection', req.body)

res.end(JSON.stringify(doc))
}

然后在 asyncData 中你可以做类似的事情:

async asyncData (context: any) {
const reqq = await axios.post(
`${url}/db-api`,
{
'sys.id': '2J2a1nQhmTYbHML2si8gmW'
}
)
return {
thatOneAndOnlyRecord: reqq.data,
}
}

您需要确保任何复杂的查询也发生在您的中间件内部,因为您正在为每个查询向 mongo 发出网络请求。

关于mongodb - 在nuxt中使用mongodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56408998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com